在 CentOS 上设置 C++ 编译参数,通常取决于你用哪种方式编译:命令行 g++、Makefile,还是 CMake。下面分情况说明。
g++ main.cpp -o main
g++ -std=c++17 \
-O2 \
-Wall -Wextra \
-g \
main.cpp -o main
常见参数说明:
-std=c++11 / c++14 / c++17 / c++20:C++ 标准-O0 / -O1 / -O2 / -O3:优化级别-g:生成调试信息(配合 gdb)-Wall -Wextra:开启常见警告-I/path/include:指定头文件路径-L/path/lib:指定库路径-lxxx:链接库(如 -lpthread)示例(带第三方库):
g++ main.cpp -I/usr/local/include -L/usr/local/lib -lopencv_core -o main
CXX = g++
CXXFLAGS = -std=c++17 -O2 -Wall -Wextra -g
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)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -Wall -Wextra -g")
add_executable(main main.cpp)
mkdir build
cd build
cmake ..
make
cmake -DCMAKE_BUILD_TYPE=Release ..
# 或
cmake -DCMAKE_BUILD_TYPE=Debug ..
g++ --version
若没有:
sudo yum install gcc-c++
g++ 4.8.5(不支持 C++17 完整特性)devtoolset:sudo yum install centos-release-scl
sudo yum install devtoolset-11
scl enable devtoolset-11 bash
| 需求 | 参数 |
|---|---|
| C++17 | -std=c++17 |
| 调试 | -g |
| 优化 | -O2 |
| 多线程 | -pthread |
| 静态链接 | -static |
| 指定头文件 | -I路径 |
| 指定库 | -L路径 -l库名 |
如果你能告诉我:
我可以给你更精确的编译参数示例。