转载_make makefile GCC/CC

本文详细介绍了gcc和make这两个编译工具的区别与联系。gcc主要用于单个文件的编译,而make则能处理整个项目的编译流程,通过解析makefile文件实现自动化编译。make还能用于文档生成和打包压缩等任务。

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
[user@localhost buildroot]$ make O=build/ac5x_pro tplink-fep_armv8_defconfig GEN /project/fep_source_commit/buildroot/build/ac5x_pro/Makefile Config.in.legacy:3802:warning: choice value used outside its choice group # # configuration written to /project/fep_source_commit/buildroot/build/ac5x_pro/.config # [user@localhost buildroot]$ make O=build/ac5x_pro clean && make O=build/ac5x_pro rm -rf /project/fep_source_commit/buildroot/build/ac5x_pro/target /project/fep_source_commit/buildroot/build/ac5x_pro/images /project/fep_source_commit/buildroot/build/ac5x_pro/host \ /project/fep_source_commit/buildroot/build/ac5x_pro/build /project/fep_source_commit/buildroot/build/ac5x_pro/staging \ /project/fep_source_commit/buildroot/build/ac5x_pro/legal-info /project/fep_source_commit/buildroot/build/ac5x_pro/graphs /project/fep_source_commit/buildroot/build/ac5x_pro/per-package /project/fep_source_commit/buildroot/build/ac5x_pro/cpe-updates \ /project/fep_source_commit/buildroot/build/ac5x_pro/pkg-stats.* /usr/local/bin/make -j1 O=/project/fep_source_commit/buildroot/build/ac5x_pro HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" syncconfig mkdir -p /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/lxdialog PKG_CONFIG_PATH="" /usr/local/bin/make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \ obj=/project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config -C support/kconfig -f Makefile.br conf /usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config -DCONFIG_=\"\" -MM *.c > /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/.depend 2>/dev/null || : /usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config -DCONFIG_=\"\" -c conf.c -o /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/conf.o /usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config -DCONFIG_=\"\" -I. -c /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/zconf.tab.c -o /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/zconf.tab.o /usr/bin/gcc -DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1 -DLOCALE -I/project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config -DCONFIG_=\"\" /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/conf.o /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/zconf.tab.o -o /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/conf rm /project/fep_source_commit/buildroot/build/ac5x_pro/build/buildroot-config/zconf.tab.c GEN /project/fep_source_commit/buildroot/build/ac5x_pro/Makefile Config.in.legacy:3802:warning: choice value used outside its choice group /bin/sh: -c: line 0: unexpected EOF while looking for matching `"' /bin/sh: -c: line 1: syntax error: unexpected end of file Makefile:589: recipe for target 'prepare' failed make[1]: *** [prepare] Error 1 Makefile:84: recipe for target ' 这是什么问题
最新发布
12-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值