刚接触linux编程,很多概论都比较模糊,今天突然用到makefile文件,想到了make与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去编译文件的。
5.Makefile文件作为一种描述文档一般需要包含以下内容:
◆ 宏定义
◆ 源文件之间的相互依赖关系
◆ 可执行的命令
Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。
下面都是有效的宏引用:
$(CFLAGS)
$Z
$(Z)
其中最后两个引用是完全一致的。
个人总结:
gcc就是一个纯编译器
而make翻译完makefile中的指命后由gcc具体来执行
只有把makefile解决 一切ok
分享到:
相关推荐
本篇文章详细阐述了unix环境下的make的使用,默认的编译器是UNIX下的GCC和CC。
本文提供了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。...这个 Makefile 可以在 GNU Make 和 GCC 编译器下正常工作。但是不能保证对于其它版本的 Make 和编译器也能正常工作。
现在讲述如何写makefile的文章比较少,这是我想写这篇文章的原因。当然,不同产商的make各不相同, 也有不同的语法,但其本质都是在 “文件依赖性”上做文章,这里,我仅对GNU...这里所默认的编译器是UNIX下的GCC和CC。
COLLECT_GCC=arm-openwrt-linux-muslgnueabi-gcc.bin COLLECT_LTO_WRAPPER=/home/rootroot/sogou/toolchain/bin/../libexec/gcc/arm-openwrt-linux-muslgnueabi/5.2.0/lto-wrapper Target: arm-openwrt-linux-...
可见,只要把这些行挪到makefile里,就能自动定义main.c的依赖是哪些文件了,做法是把命令的输出重定向到.d文件里:gcc -MM main.c > main.d,再把这个.d文件include到makefile里。 如何include当前目录每个.c生成的...
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。...这里所默认的编译器是UNIX下的GCC和CC。
什么是 makefile?或许很多 Winodws 的程序员都不知道这个东西,因为那些 Windows 的集成开 发环境(integrated development environment,IDE)都为你做了这个工作,但...这里所默认的编译器是 UNIX 下的 GCC 和 CC。
这里所默认的编译器是UNIX下的GCC和CC。 二、关于程序的编译和链接 —————————— 在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在...
概述 什么是 makefile?或许很多Windows 的程序员都不知道这个东西,因为那些Windows 的IDE 都为你做了这个工作,但我觉得 要作一个好的和...这里所默认的编译器是UNIX 下的GCC 和CC。 关于程序的编译和链接
CC = /home/mipsel-unknown-linux-gnu/bin/mipsel-unknown-linux-gnu-gcc-4.4.6 然后重新clean 后再编译即可: make -f unix/Makefile clean make -f unix/Makefile generic (--编译unzip60 如上类似--)
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是...这里所默认的编译器是UNIX下的GCC和CC。 ——陈皓
Template_MakeProject GCC主机上的C / C ++模板Makefile项目两种文件结构,Makefile是通用的,projcet.mk是项目特定的自动化的依赖关系创建所有路径都在构建目录中展平,以避免相同的文件名冲突灵活的源包含,通过...
什么是 makefile?或许很多 Windows 的程序员都不知道这个东西,因为那些 Windows 的集成开 发环境(integrated development environment, IDE)都为你做了这个工作,但我...这里所默认的编译器是 UNIX 下的 GCC 和 CC
编译源码方式安装gcc过程中报错信息的记录以及排错的记录
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。...这里所默认的编译器是UNIX下的GCC和CC。
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。...这里所默认的编译器是UNIX下的GCC和CC。