与配置C++有关的名词
目录:
一:GNU
二:MSYS2
三:GNU与MSYS2的关系
四:Unix
五:Make
六:小问题
一,GNU(GNU's Not Unix)
GNU 是一个自由软件项目,它的目标是构建一个完全自由的操作系统。这个操作系统包括了许多开发工具(如编译器、调试工具、编辑器等),大部分是用来开发和构建软件的。
GNU Make 是 GNU 项目中的一个核心工具,通常用于自动化构建过程,尤其是在 C、C++ 等语言的编译过程中。
GNU 还开发了其他很多重要工具,如 GCC(编译器)、GDB(调试器)等,这些工具在很多类 Unix 系统中都广泛使用。
GNU Make 是 GNU 项目提供的 Make 实现
二,MSYS2
MSYS2(Minimal SYStem 2)是一个为 Windows 提供类 Unix 环境的项目,它通过提供一个类似 Linux 的命令行界面来帮助开发者在 Windows 上构建和使用 Unix 工具链。
MSYS2 本质上是一个软件包管理系统(基于 pacman),它使得 Windows 用户能够方便地安装和使用包括 GNU 工具(如 GNU Make、GCC、GDB 等)在内的许多 Unix/Linux 系统上的工具。
简单来说,MSYS2 是在 Windows 上运行的一个类 Unix 环境,允许你使用 GNU 工具(如 make、gcc 等),让你能够像在 Linux 或 macOS 上一样开发和构建软件。
三,GNU和MSYS2的关系
GNU 工具链 是 MSYS2 环境的一部分,它通过 pacman 包管理器安装 GNU 软件包(如 GNU Make、GCC 等),从而让开发者可以在 Windows 环境中使用这些工具,进行源代码编译和构建。
四,Unix
①概念:
Unix 是一种多用户、多任务、分时操作系统。
②Unix 的特点
Unix 系统有一些重要的设计哲学,以下是它的几个核心特点:
1. 多用户和多任务:
-
多用户:Unix 支持多个用户同时登录并使用系统,每个用户有自己独立的环境和权限。
-
多任务:Unix 能够同时运行多个程序和任务,每个任务之间相互独立。
2. 命令行界面:
-
Unix 的操作界面主要是命令行界面(CLI)。用户通过输入命令来执行各种操作。虽然图形用户界面(GUI)在后期也被引入,但 Unix 的核心设计始终围绕着命令行操作展开。
3. 文件系统:
-
一切皆文件:在 Unix 中,几乎所有的东西都是文件,包括硬件设备、进程、甚至套接字和管道。文件系统采用层级结构,根目录下有多个子目录,用户数据和系统数据通常位于不同的目录下。
-
Unix 的文件系统非常稳定和可靠,支持权限控制,保证了用户数据的安全。
③Unix 与类 Unix 系统
很多操作系统都受到了 Unix 的启发或者直接源自 Unix,这些操作系统被统称为 类 Unix 系统。常见的类 Unix 系统有:
-
Linux:一个开源、免费的类 Unix 操作系统,受到 Unix 的极大影响,是目前最流行的服务器操作系统之一。
-
macOS:苹果的桌面操作系统,基于 Unix(BSD)开发,提供了图形化界面和许多 Unix 工具。
-
BSD 系列(FreeBSD、OpenBSD、NetBSD):这些操作系统是基于 Unix 的 BSD 版本,是 Unix 的一个重要变种,广泛用于服务器和嵌入式系统。
五、make
①make概念
make 是一个 自动化构建工具,它的主要作用是 管理和自动化程序的编译和构建过程,尤其适合多文件、多模块的项目。
简单来说,make 可以:
-
自动判断哪些文件需要重新编译
根据源文件和头文件的修改时间,make只会编译被修改的文件,避免重复劳动。 -
执行编译和链接命令
通过 Makefile(构建规则文件),make知道如何把源代码(比如 C/C++ 文件)编译成对象文件,再链接成可执行程序。 -
管理项目依赖
可以自动处理文件之间的依赖关系,比如一个.cpp文件依赖某个.h文件,修改头文件时相关.cpp文件会被重新编译。
②关于make的简单版理解
make 是一个 工具,用来 自动帮你把程序编译好。
假设你写了程序,有很多 .cpp 或 .c 文件,要生成可执行程序。如果手动编译,每次都要敲很多命令,非常麻烦,而且容易出错。
make 就像一个 “聪明的助手”:
-
它知道哪些文件改过,哪些文件没改
-
它只重新编译需要修改的部分
-
自动运行你写好的编译命令,把所有东西整合成可执行文件
make 的“大脑”是一个叫 Makefile 的文件。
这个文件里写着:
-
目标(target) —— 你想得到的东西,比如最终程序
program -
依赖(dependency) —— 生成目标需要哪些文件,比如源代码和头文件
-
命令(command) —— 生成目标需要执行的命令,比如编译命令
g++
为什么 C++ 项目离不开 make?
-
C++ 项目可能有很多源文件
-
手动写编译命令容易忘记或写错
-
改了一个小文件,不用全部重新编译
-
可以自动化管理依赖关系,让整个流程更高效
六、小问题
为什么在 Windows CMD 里不用安装 gnuwin32.make,也能用 MSYS2 的 Make
核心概念 1:PATH 环境变量
-
PATH 是 Windows 系统的一个环境变量,用来告诉操作系统:
“当你在命令行输入一个命令时,从哪些目录去找对应的可执行程序。”
核心概念 2:MSYS2 的 Make
-
MSYS2 自带的
make.exe位于:
D:\app\msys2\usr\bin\make.exe
-
当你在 MSYS2 终端 里输入
make:-
终端会去
/usr/bin下找make.exe,找到后执行。
-
-
当你在 Windows CMD / PowerShell 里输入
make:-
系统会去 PATH 列表里的每个目录找可执行文件。
-
由于 MSYS2 安装时或者你手动配置时,把
D:\app\msys2\usr\bin加入了系统 PATH。 -
所以 CMD 也找到了
make.exe并执行了它。
-
核心概念 3:gnuwin32.make 的作用
-
gnuwin32.make 是一个 Windows 原生的 GNU Make 安装包。
-
作用是:如果你没有 MSYS2 或 MinGW,你也可以在 Windows 上使用 make。
-
但是如果你已经有 MSYS2 的 Make,并且 PATH 配置正确,不需要再安装 gnuwin32.make。
更多推荐


所有评论(0)