常用 g++/gcc 选项

发布时间 2023-10-12 23:50:19作者: 黄河大道东

编译选项

  • -c: 只编译源文件,不进行链接,生成目标文件。

  • -o <file>: 指定输出文件的名称。

  • -g: 生成调试信息,允许使用调试器进行调试。

  • -O<level>: 指定优化级别(0到3),其中0表示无优化,3表示最大优化。

  • -Wall: 启用常见警告信息。

  • -std=<standard>: 指定C++标准(如-std=c++11)。

  • -I <dir>: 添加包含文件搜索路径。

  • -L <dir>: 添加库文件搜索路径。

  • -l <library>: 链接指定的库。

  • -m<32/64/x32/486>:编译器中的架构选项,用于指定目标系统的位数,通常使用-m64

  • -fPIC 是g++编译器的一个选项,用于生成位置无关代码(Position Independent Code,PIC)。位置无关代码是一种可在内存中加载并运行的代码,而不受加载地址的限制。这通常在创建共享库或动态链接库(.so文件或.dll文件)时使用。

  • -fvisibility=hidden :选项的作用是将编译单元(通常是一个源文件或一个库)中的符号默认设为“隐藏”。这意味着只有在同一编译单元内的其他部分可以访问这些符号,而在不同编译单元之间无法访问。这对于实现信息封装、减少符号污染以及提高代码的安全性非常有用。使用这个选项通常需要与其他一些编译器指令一起使用,以明确指定哪些符号应该是可见的(例如,使用 __attribute__((visibility("default"))))。主要用于UNIX/Linux平台上的共享库或动态链接库的开发。

链接选项

  • -shared: 生成共享库。
  • -static: 静态链接所有库。
  • -Wl,<option>: 将<option>传递给链接器。

预处理宏选项

  • -D <macro>: 定义预处理宏。
  • -U <macro>: 取消预处理宏的定义。

依赖关系选项

  • -M-MM: 自动生成Makefile所需的依赖关系信息。

其他选项

  • -E: 只执行预处理,生成预处理后的源代码。
  • -S:生成汇编.s文件

参考

g++ 编译选项:https://blog.csdn.net/qq_44632658/article/details/131152115