vi相关知识可以参考另一篇Ubuntu应用里的内容。
编译器GCC编译流程:
预处理(pre-processing):.i
gcc -E -o hello.i hello.c //-E编译器在预处理结束后就停止,.i文件中将.h文件加入到.c中了
编译(compiling):主要检查代码规范性,是否有语法错误,以及确定代码实际要做的工作。
gcc -S -o hello.s hello.i //-S编译器在编译结束后就停止,.s为汇编程序
汇编(assembling)
gcc -c hello.s -o hello.o //-c编译器在汇编结束后就停止,.s为汇编程序
链接(linking)
gcc hello.o -o hello //链接系统库函数,系统吧类似printf的函数实现放入名为lib.so.6中,默认gcc会搜索路径usr/lib/,也就是链接到lib.so.6中。
-Wall 打开所有类型语法警告,建议养成良好的习惯。
gcc使用函数库
-I <dir> 添加头问价引用路径 大写的i
-L <dir> 添加库文件的引用路径
-l 使用链接库 -lm 即使用libm.so.5 省去了lib如果使用静态库 加上-static
make工程管理
- target
- dependency_file
- command
target:dependency_file
command #tab符号
#最简单的例子
hello.o:hello.c hello.h
gcc -c hello.c -o hello.o