gcc –c hello.c会自动产生hello.o文件,但不会产生二进制执行文件。
gcc –O hello.c –c会自动产生hello.o文件,并对其进行优化。
gcc sin.c –lm –L/usr/lib –I/usr/include 在最终连接成二进制文件的时候常用。
-lm指的是libm.so或libm.a函数库文件。
-L后面接的路径是函数库的搜索目录。
-I 后面接的是源码内包含文件所在的目录。
gcc –o hello hello.c 将编译结果输出到特定文件名
-o 后面接的是要输出的二进制文件名
Gcc –o hello hello.c –Wall 加入Wall 后,程序编辑严禁,所以会出现警告信息。
===========================================================================
Make的好处:
简化编译时所需要执行的命令;
如在编译完成后,修改了某些源码文件,则make仅会针对被修改的文件进行编译,其他的目标文件不会被修改;
最后可以根据依赖性来更新(update)执行文件;
基本的makefile规则:
目标(target):目标文件1.o 目标文件2.o
按一下<tab>键 gcc -o 预建立的可执行文件 目标文件1.o 目标文件2.o
#表示注释
目标与相关文件之间需要“:”隔开。
实例:
=
gcc -o main ${OBJS} ${LIBS}等价与gcc -o $@ ${OBJS} ${LIBS}
如此以来,makefile中就至少有两个目标,分别是main与除了clean,如果想建立main,输入“make main”,如果想清除.o文件,输入make clean 即可。如果想先清除目标文件,然后再编译main程序,可以这样输入:“make clean main”
==================================================================================
变量与bash shell脚本的语法区别:
1、变量之间内容以“=”隔开,同时两边可以有空格。
2、变量左边不可以有<tab>.
3、“=”两边不能有“:“
4、习惯上,变量最好以大写为主
5、以${}或者$()的方式使用变量
6、该shell变量可以被套用,例如CFLAGS变量
7、在命令行模式也可以使用变量