g++编译命令大全

g++ 是 GNU 编译器集合中的 C++ 编译器。它提供了一系列编译选项,允许用户控制编译过程的各个方面。以下是 g++ 的所有主要编译命令和选项的详细介绍:

基本编译命令
编译和链接

sh
复制代码
g++ -o outputfile sourcefile.cpp
编译 sourcefile.cpp 并生成可执行文件 outputfile。

仅编译

sh
复制代码
g++ -c sourcefile.cpp
编译 sourcefile.cpp 生成目标文件 sourcefile.o,但不进行链接。

编译并指定输出目标文件

sh
复制代码
g++ -o outputfile.o -c sourcefile.cpp
编译 sourcefile.cpp 生成目标文件 outputfile.o。

链接

sh
复制代码
g++ -o outputfile file1.o file2.o
将目标文件 file1.o 和 file2.o 链接生成可执行文件 outputfile。

常用编译选项
优化选项

-O0:无优化(默认)。
-O1:优化生成代码和编译时间。
-O2:进一步优化,不增加编译时间。
-O3:启用所有优化。
-Os:优化生成较小的代码。
-Ofast:启用所有快速优化,不完全符合标准。
调试信息

-g:生成调试信息,用于调试器(如 gdb)。
警告选项

-Wall:启用所有常见警告。
-Wextra:启用额外的警告。
-Werror:将所有警告视为错误。
-pedantic:严格遵守 ISO 标准并生成警告。
标准选择

-std=c++98:使用 C++ 98 标准。
-std=c++11:使用 C++ 11 标准。
-std=c++14:使用 C++ 14 标准。
-std=c++17:使用 C++ 17 标准。
-std=c++20:使用 C++ 20 标准。
预处理器选项

-Dname:定义预处理器宏 name。
-Dname=value:定义预处理器宏 name 并赋值。
-Uname:取消定义预处理器宏 name。
-I directory:添加搜索头文件的目录。
链接选项

-L directory:添加搜索库文件的目录。
-l library:链接库文件 library。
-static:使用静态链接。
-shared:生成共享库。
生成选项

-o file:指定输出文件名。
-c:仅编译,不链接。
-E:仅运行预处理器。
-S:仅编译到汇编代码。
-M:生成用于 make 的依赖文件。
库相关选项

-shared:生成共享库。
-fPIC:生成与位置无关的代码,通常用于共享库。
代码生成选项

-fno-exceptions:不使用 C++ 异常。
-fno-rtti:不使用运行时类型识别。
示例
编译并优化

sh
复制代码
g++ -O2 -o optimized_program program.cpp
编译并生成调试信息

sh
复制代码
g++ -g -o debug_program program.cpp
启用所有警告

sh
复制代码
g++ -Wall -Wextra -o warned_program program.cpp
使用特定 C++ 标准

sh
复制代码
g++ -std=c++17 -o modern_program program.cpp
定义和使用预处理器宏

sh
复制代码
g++ -DDEBUG -o debug_program program.cpp
添加头文件和库文件路径

sh
复制代码
g++ -I /path/to/headers -L /path/to/libs -l mylib -o program program.cpp
生成共享库

sh
复制代码
g++ -shared -fPIC -o libmylib.so mylib.cpp
生成依赖文件

sh
复制代码
g++ -M program.cpp > Makefile.dep
通过这些选项,用户可以灵活地控制 g++ 编译器的行为,以满足各种编译需求。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值