oichen

GCC

  [1].指定GCC进行的操作的选项

  -E :让GCC仅进行预处理后就不继续作下去了

  -S :让GCC仅进行预处理,编译后就不继续作下去了

  -c :让GCC仅进行预处理,编译,汇编后就不继续作下去了

  -o Ouput:指定输出文件,默认gcc编译输出的程序名为a.out.

  @File:让gcc执行指定文件File中的命令,该文件中每个gcc命令以空白符隔开


  [2].指定使用的C语言标准

  -std=Standard:指定标准,详细标准参考gcc手册页,你可以指定-std=c89(使用

  89年制定的C语言标准),也可以指定-std=c99(使用99年制定的C标准)

  -ansi:等价于-std=c89


  [3].控制输出信息

  -w:禁止输出所有警告信息

  -Wall:输出所有警告信息

  -Werror:将所有警告信息当成错误信息输出

  [4].调试相关选项(生成调试信息)

  -g:生成用于GDB调试程序使用的调试信息

  -p:生成用于prof程序使用的调试信息

  -pg:生成用于gprof程序使用的调试信息


  [5].程序优化选项

  -O,-O1:初步优化(会占用更多时间进行编译,但是编译后的程序运行时占用

  的内存更少)

  -O2:比-O1更进一步优化

  -O3:比-O2更进一步优化

  -O0:不进行优化


  [6].宏操作

  -D name:定义宏name的值为1,类似在源程序中使用#define name 1

  -D name=val:定义宏name的值为val,类似#define name val

  -U name:取消宏name的定义,类似#undef name

  -undef:取消所有系统指定或GCC指定的宏定义,但保留标准预定义的宏


  [7].指定搜索目录

  -I dir,-Idir:追加目录dir到头文件的搜索路径中

  -L dir,-Ldir:追加目录dir到库文件的搜索路径中

  -Bprefix:指定gcc查找库文件,头文件,数据文件的目录


  [8].指定使用的库文件,头文件

  -nostdinc:不使用标准头文件(默认在/usr/include)

  -nostdlib:不使用标准库文件(默认在/usr/lib)

  -l library:指定使用的库文件,默认gcc在编译一个程序时只连接到标准c库

  上,是用该选项能够使他连接到指定的库上,例如若你要连接到

  数学库上(libm.a)则你只须指定 -lm就可以了。也就是说这个选项

  指定连接的库文件可以将前缀lib和后缀.a(或.so)省略。

  -nostartfiles:不使用标准的系统的startup文件


  [9].指定连接库文件的方式

  -shared:动态连接到库文件上,这是默认行为。

  -static:静态连接到库文件上

  注:动态连接和静态连接的区别在于:动态连接是在程序运行时才连接到

  库文件上(也就是需要用到时才连接上),而静态连接则是在编译时就

  将程序连接到库文件中(这样做会增大程序,但便于移植)


  [10].杂项

  --sysroot=Dir:指定头文件和库文件的搜索路径的根目录。头文件搜索目录

  为Dir/usr/include,库文件的搜索目录为Dir/usr/lib,默认Dir为空

  -march=体系结构类型:详细情况参见man gcc

  -mtune=CPU类型:详细情况参见man gcc


评论
©oichen | Powered by LOFTER