文章目录
他们五个的区别呢??
1.GCC
- 全称是GNU Compiler Collection,是一个编译套件。
- 可通过gcc/g++来编译目标项目。
- 项目结构复杂时,通过gcc/g++命令直接编译会出现非常多不便之处,于是出现了Makefile。
2.Makefile
- 一个包含一堆有条理的gcc/g++编译命令的文件
- Makefile是需要开发者自己手写的。
- 那之前可以通过在终端输入gcc/g++命令来编译项目,现在有了Makefile,又要怎么用呢?
这就讲到Make工具了。
3.Make
- Make工具就是“读取”并执行Makefile文件中的编译指令,从而进行项目编译。
4.CMakelists
- 手写Makefile就是一件非常恐怖的事情了,你需要在不同的目录底下写不同的Makefile,这可能有非常多个。
- 就有CMakelists了。
- CMakelists可以通过更简单的写法来生成对应的Makefile文件。
怎么生成呢?就是写好CMakelists.txt之后,通过CMake工具生成。
5.CMake
- 类似Make工具的功能,CMake工具就是“读取”并执行CMakelists.txt中的语句,来生成对应的Makefile
- 然后就可通过Make工具来“执行”Makefile
MinGW和cygwin
1. windows与Linux操作系统的不同
- 在基本设计概念上,进程、线程、寻址、内存管理等方面都是大同小异的,但二者之间的程序不兼容,因为二者在系统功能上是不同的,提供的系统API也是不同的。
- 可执行文件的格式,Windows采用的是PE的格式,要求以.exe为后缀名,而Linux使用的是 elf 的格式;
- 操作系统提供的系统API是不同的,如Windows使用CreateProcess()创建进程,而Linux使用fork()。
- 想在Windows环境下使用Linux的编译工具,也就是gcc/g++,我们需要一个中间的转换工具或者平台,这也就是MinGW和cygwin存在的原因。
1. 什么是 MinGW
- Minimalistic GNU for Windows,
- 可看做是win版本下的GCC。
- Mingw有一个Msys的子项目,可以提供一些模拟Linux的shell和基本的Linux工具,Msys是一个辅助环境。
- MinGw 有专门的Win32 API的头文件,来把代码中Linux方式的系统调用替换为对应的Windows下的调用方式,某种程度上可以称之为将Linux调用 翻译为 Windows调用。
2 cygwin
- Windows上运行的unix模拟环境,是cygnus solutions开发的自由软件
- Cygwin更像一个平台,模拟了Linux的接口,提供了运行在它上面的程序使用,提供了很多Linux环境下的GNU软件
- Cygwin 通过Cygwin1.dll的文件实现操作系统API的转换,模拟了Linux的调用接口给程序,程序以Linux的方式调用系统API,但这个API的目标库是Cygwin1.dll,Cygwin1.dll再调用Windows对用的方式实现,再把结果返回给程序。