一,GCC简称
GNU C Compiler -> GNU Compiler Collection
表示现在可以支持多种语言
二,编译的四个阶段
GCC编译程序时,会经历四个阶段
- 预处理。
- 编译。
- 汇编。
- 链接。
三,引入头文件搜索目录
- 默认。/usr/include 、 /usr/local/include 等。
- CXX_INCLUDE_PATH环境变量。这个和-I是有区别的。
- -I 选项。
四,链接库
链接库其实就是把很多.o文件打成一个包,生成一个库文件,另外LD_LIBRARY_PATH指定目录 ,
- -r 选项。
- -shared选项。指定生成动态库。
- -fPIC。编译为位置独立的代码,否则是位置相关的,此时共享代码可能失效。
动态库的搜索顺序如下:
- 编译目标代码时 ”-Wl,-rpath,” 指定的动态库搜索路径(当指定多个动态库搜索路径时,路径之间用冒号”:”分隔)。如,-L../xx -Wl,-rpath=../xx
- 环境变量 LD_LIBRARY_PATH 指定的动态库搜索路径。
- 配置文件 /etc/ld.so.conf 中指定的动态库搜索路径。
- 默认的动态库搜索路径 /lib,如果是64位系统还包括 /lib64。
- 默认的动态库搜索路径 /usr/lib,如果是64位系统还包括 /usr/lib64。
五,其它选项
- -Wall。输出更多警告信息。
- -pg。生成只有gprof才可以识别的时间调用统计信息。
- -ggdb。生成只有gdb可以调试的调试信息。
- -g。加入调试信息。
- -w 。 关闭所有警告信息。
六,待续