在 CentOS 上设置 C++ 编译参数,通常取决于你用什么方式编译:命令行 g++、Makefile,还是 CMake。下面分情况说明。
CentOS 默认一般使用 g++(来自 GCC)。
g++ main.cpp -o main
g++ -std=c++17 -O2 -Wall -Wextra main.cpp -o main
常用参数说明:
-std=c++11 / c++14 / c++17 / c++20:指定 C++ 标准-O0 / -O1 / -O2 / -O3:优化级别-g:生成调试信息(配合 gdb)-Wall -Wextra:开启常见警告-I/path/to/include:指定头文件路径-L/path/to/lib -lxxx:链接库示例(带调试):
g++ -std=c++17 -g -Wall main.cpp -o main
示例 Makefile:
CXX = g++
CXXFLAGS = -std=c++17 -O2 -Wall -Wextra
TARGET = main
SRC = main.cpp
$(TARGET): $(SRC)
$(CXX) $(CXXFLAGS) $(SRC) -o $(TARGET)
clean:
rm -f $(TARGET)
使用:
make
./main
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_compile_options(-O2 -Wall -Wextra)
add_executable(main main.cpp)
mkdir build
cd build
cmake ..
make
g++ --version
如果没有:
sudo yum install gcc-c++
(CentOS 8 可用 dnf)
CentOS 7 默认是 GCC 4.8,不支持 C++17。
可安装 devtoolset:
sudo yum install centos-release-scl
sudo yum install devtoolset-9
scl enable devtoolset-9 bash
然后:
g++ -std=c++17 main.cpp -o main
| 需求 | 参数 |
|---|---|
| C++17 | -std=c++17 |
| 调试 | -g |
| 优化 | -O2 |
| 警告 | -Wall -Wextra |
| 静态链接 | -static |
| 指定库 | -lm -lpthread |
如果你能告诉我:
我可以给你完全定制化的配置示例。