不代表gcc/g++全部的参数详解,仅为了对自己遇到的问题进行备忘,防止再次踩坑。
参考链接Runoob
目录选项
-I,添加包含路径
-I 在编译时用,告诉编译器去哪个路径下找文件
如:-I /home/hello/include
表示将/home/hello/include目录作为第一个寻找头文件的目录。
编译器的寻找顺序是:/home/hello/include–>/usr/include–>/usr/local/include。如果在/home/hello/include中有个文件hello.h,则在程序中用#include就能引用到这个文件。
可以加多个包含路径,编译器的寻找顺序为添加的顺序。
-l,添加引用链接库
-l 在链接时用到,它的作用是告诉链接器,要用到哪个库。 如:-l pthread
告诉链接器(linker),程序需要链接pthread这个库,这里的pthread是库名不是文件名,具体来说文件句是libpthread.a(静态链接库)或libpthread.so(动态链接库)。
如果动态库和静态库同时存在,会优先链接动态库。
-L,添加链接库路径
-L 后跟路径,告诉链接器从哪找库(.so文件),只有在链接时会用到。
如:-L /home/hello/lib
表示将/home/hello/lib目录作为第一个寻找库文件的目录,寻找顺序是:/home/hello/lib–>/usr/lib–>/usr/local/lib。
可以加多个包含路径,链接器的寻找顺序为添加的顺序。
其他选项
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-O0
-O1
-O2
-O3
编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
参考链接:知乎福大CVers