他们五个的区别呢??

他们五个的区别呢??

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对用的方式实现,再把结果返回给程序。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章