Linux网络编程第二版 宋敬彬
默认文件扩展名
.i 预处理后的c文件
.s 汇编语言源文件
.o 汇编后的目标文件
.a 静态库
.so 共享库
a.out 链接后的输出文件
gcc下有很多编译器 常见的有以下几种
cc c语言编译器
gcc c语言编译器
g++ c++语言编译器
cpp 预处理编译器
头文件和库文件默认路径如下
/usr/local/include
/usr/incluede
…
/usr/lib
/lib
/usr/local/lib
…
预编译 ---> 编译和优化 ---> 汇编 ---> 链接
- 预编译 将引用的头文件包含进源代码中 并对一些宏进行替换
- gcc -E hello.c 默认会直接在终端输出 如果需要将预编译生成的中间内容输出到文件需要指定-o 文件名
- 编译和优化 将用户语言翻译成机器可以处理识别的操作码 生成目标文件 通常翻译为汇编语言
- gcc -c hello.c 会生成默认的目标文件 hello.o 如果要指定生成的文件可以用-o 文件名
- gcc -S hello.c 会生成默认的汇编文件 hello.s 如果要指定生成的文件可以用-o 文件名
- 汇编器as
- 最后需要将所有的目标文件用某种方式组合起来才能运行 这就是链接的作用拉拉
生成静态库和使用静态库
静态库是obj文件的一个集合 通常叫做libxxx.a
由程序ar生成
生成静态库或者将一个obj加到已经存在的静