您的位置:首页 > 其它

gcc与make

2016-03-19 10:33 190 查看
刚接触linux编程,很多概论都比较模糊,今天突然用到makefile文件,想到了make与gcc的关系。于是查阅了一些资料,在此做一个小结:

gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.

1.gcc是编译一个文件,make是编译多个源文件的工程文件的工具。

2.make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

3.make就是按照makefile脚本对整个项目的各个文件进行分别编译和链接,makefile基本上就是"目标"(target),"关连"(dependencies) 和"动作"三者所组成的脚本。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。make除了可以做到编译和连结,也可以把如何产生文档(如manual
page, info档及 dvi 档) ,以及打包压缩都完成。

4.make 可以说是一个批处理程序,它可以自动编译多个文件。当然写好的脚本是前提。MAKE是运用GCC去编译文件的。

make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者makefile),执行一组以gcc/g++为主的shell命令序列。输入文件主要用来记录文件之间的依赖关系和命令执行顺序。

5.Makefile文件作为一种描述文档一般需要包含以下内容:

◆ 宏定义

◆ 源文件之间的相互依赖关系

◆ 可执行的命令

Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。

下面都是有效的宏引用:

$(CFLAGS)

$Z

$(Z)

其中最后两个引用是完全一致的。

个人总结:

gcc就是一个纯编译器、编译工具,每次编译一个文件

而make更强大,通过makefile文件,并调用gcc编译器,可以一次编译整个工程文件

make是定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,也就是说make是调用gcc的。

gcc备注

GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。GNU系统是彻底的自由软件。

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。[2] GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。

GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: