常用GCC编译选项

指定输出文件名

  • -o file:编译完成的输出到file,否则会使用非常烂的默认名字(比如a.exe)。

指定宏定义

以下信息与手册上的写法略有出入[5],但是手册上的写法有时会报错。

  • -Dname:等效于#define name。
  • -Dname=definition:等效于#define name definition。

这样指定的宏定义在引用任何头文件前即存在。

包含头文件

  • -Idir:将目录dir添加到搜索头文件的目录列表中[2]。

说明

此处有坑点,某些老版本的GCC不支持-I./,会找不到文件,只能用-I.

链接库

  • -Ldir:将目录dir添加到链接库要搜索的目录列表中[2]。
  • -llibrary:链接时搜索名为library的库[3]。对应的库文件名为liblibrary.a或liblibrary.so(Linux)。
    注:-l选项要放在源文件列表后,同时依赖其他库的库要放在顺序靠前的位置,否则会出错。
    比如,使用pthread库时要增加-lpthread参数,以链接libpthread.a。

查看帮助

运行

gcc --help
g++ --help

打印的信息极少,因此还是需要查阅手册。

参考

  1. 3.1 Option Summary (Using the GNU Compiler Collection (GCC));
  2. 3.16 Options for Directory Search (Using the GNU Compiler Collection (GCC));
  3. 3.15 Options for Linking (Using the GNU Compiler Collection (GCC));
  4. gcc/g++ 链接库的编译与链接 - CSDN博客;
  5. 3.13 Options Controlling the Preprocessor (Using the GNU Compiler Collection (GCC));