gcc编译
四步骤:预处理(-E)、编译(-S)、汇编(-c)、链接(-o)
方式1:
gcc hello.c 输出一个a.out,然后./a.out来执行该应用程序。
gcc -o hello hello.c 输出hello,然后./hello来执行该应用程序。
或者:gcc hello.c -o hello (顺序可以调换)
输出:hello 为程序可执行文件
方式2:
gcc -E -o hello.i hello.c(预处理)
gcc -S -o hello.s hello.i(编译)
gcc -c -o hello.o hello.s(汇编)
gcc -o hello hello.o(链接)
.o:object file(OBJ文件)
小结:
1)输入文件的后缀名和选项共同决定gcc到底执行那些操作。
2)在编译过程中,除非使用了-E、-S、-c选项(或者编译出错阻止了完整的编译过程)
否则最后的步骤都是链接。
方式3:
gcc -c -o hello.o hello.c
gcc -o hello hello.o
gcc会对.c文件默认进行预处理操作,-c再来指明了编译、汇编,从而得到.o文件
再通过gcc -o hello hello.o将.o文件进行链接,得到可执行应用程序
多个文件一起编译:
文件:test_a.c test_b.c
两种编译方法:
1、一起编译
gcc test_a.c test_b.c -o test
2、分别编译各个源文件,之后对编译后输出的目标文件链接
gcc -c test_a.c
gcc -c test_b.c
gcc -o test_a.o test_b.o -o test
比较:第一中方法编译时需要所有文件重新编译;第二种需重新编译修改的文件,未修改的不用重新编译。