本文共 1578 字,大约阅读时间需要 5 分钟。
gcc编译C程序的四个步骤。 1,预处理 2,编译 3,汇编 4,链接
-Idir
添加dir
目录作为头文件搜索路径,这个 dir
目录比系统头文件目录被搜索的早,所以可以通过它用自己的头文件代替系统头文件。如果有多个 -I
选项,按从左到右的顺序搜索,系统默认目录在这之后。如果该选项的dir是系统默认目录,则忽略该选项,且不改变搜索顺序。
-iquotedir
添加dir
目录作为头文件搜索路径,只对引号情况有效:#include "file";
#include <file>
两者都搜索用 -I
-Ldir
添加dir
目录到用于搜索 -l
选项的目录列表。
--sysrootdir
用 dir
作为头文件和库的根目录,例如,如果编译器正常情况下在/usr/include
找头文件,在 /usr/lib
中找库文件,在这之后,更改为dir/usr/include and dir/usr/lib.
-llibrary-l librarySearch the library named library when linking.
链接时候搜索名为 library 的库,-l
和库的名字之间可以有空格也可以没有,例如 -lname
意思是寻找名为name的库,在标准库中库的名字一般为:
-L
参数指定的目录。在没有使用-static 选项时,发现共享库name.so , 则使用name.so 进行动态链接。(共享库后缀.so 静态库.a) -static
禁止与共享库链接
-shared
尽量与共享库链接,这是默认选项。
-c Compile or assemble the source files, but do not link.
只对源文件进行编译,不链接生成可执行文件。只需要产生目标文件时候使用该选项。
-S Stop after the stage of compilation proper; do not assemble.
只对源码文件编译,不装配不链接。输出为装配码文件
-E Stop after the preprocessing stage; do not run the compiler proper.
只进行预预处理,输出为与编译源码文件。
-g
生成供 gdb 使用的调试信息。
-ggdb
产生更多的调试信息。
-O[0,1,2,3]
优化程序,默认2级优化,0 不优化,优化和调试不兼容,所以不要同时使用-g 和-O 选项。
-o filename (小写) 指定输出文件名,默认 a.out
gcc 在编译时如何去寻找所需要的头文件:
※所以header file的搜寻会从-I开始 ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH ※再找内定目录 /usr/include /usr/local/include(centos7中该目录下是空的) gcc的一系列自带目录 /usr/include/c++/4.8.5编译的时候:
※gcc会去找-L ※再找gcc的环境变量LIBRARY_PATH ※再找内定目录 /lib和/lib64 /usr/lib 和/usr/lib64 /usr/local/lib和/usr/local/lib64转载地址:http://meqii.baihongyu.com/