在CentOS系统下,使用C++编译器(如g++)进行编译时,可以使用一些常见的编译选项来控制编译过程和生成的可执行文件。以下是一些常用的编译选项:
-c:只编译源文件,不进行链接,生成目标文件(.o)。
g++ -c main.cpp
-o:指定输出文件的名称。
g++ -o myprogram main.cpp
-Wall:启用所有常见的警告信息。
g++ -Wall -o myprogram main.cpp
-Wextra:启用额外的警告信息。
g++ -Wall -Wextra -o myprogram main.cpp
-pedantic:严格遵循C++标准,发出标准不允许的警告。
g++ -Wall -Wextra -pedantic -o myprogram main.cpp
-std=c++XX:指定C++标准版本(例如,c++11, c++14, c++17, c++20)。
g++ -std=c++17 -o myprogram main.cpp
-O1, -O2, -O3:优化级别,-O3是最高级别的优化。
g++ -O2 -o myprogram main.cpp
-Os:优化代码大小。
g++ -Os -o myprogram main.cpp
-Ofast:启用所有优化,并且忽略标准限制(如未定义行为)。
g++ -Ofast -o myprogram main.cpp
-g:生成调试信息。
g++ -g -o myprogram main.cpp
-ggdb:生成适合GDB调试的信息。
g++ -ggdb -o myprogram main.cpp
-lXXX:链接指定的库(例如,-lm链接数学库)。
g++ -o myprogram main.cpp -lm
-Lpath:指定库文件的搜索路径。
g++ -o myprogram main.cpp -L/path/to/library -lmylib
-static:静态链接所有库。
g++ -static -o myprogram main.cpp
-Ipath:指定头文件的搜索路径。
g++ -I/path/to/headers -o myprogram main.cpp
-Dmacro=value:定义宏。
g++ -DDEBUG -o myprogram main.cpp
-fPIC:生成位置无关代码(用于共享库)。
g++ -fPIC -o libmylib.so main.cpp
这些选项可以根据具体需求组合使用,以实现不同的编译目标和优化效果。