温馨提示×

Linux C++怎样配置编译选项

小樊
39
2026-07-05 18:33:00
栏目: 编程语言

在 Linux 下用 C++ 配置编译选项,常见方式取决于你用的是 命令行(gcc/g++)Makefile 还是 CMake。下面按常见场景说明。


一、使用 g++/gcc 直接编译(最基础)

1️⃣ 基本编译

g++ main.cpp -o main

2️⃣ 常用编译选项

g++ -std=c++17 -Wall -Wextra -O2 main.cpp -o main
选项 说明
-std=c++11/14/17/20 指定 C++ 标准
-Wall 开启常用警告
-Wextra 更多警告
-Werror 把警告当错误
-O0 / -O2 / -O3 优化级别
-g 生成调试信息(gdb)
-I/path 指定头文件路径
-L/path 指定库路径
-lxxx 链接库(如 -lpthread

3️⃣ 多文件编译

g++ -std=c++17 -Wall -c foo.cpp
g++ -std=c++17 -Wall -c main.cpp
g++ foo.o main.o -o app

二、使用 Makefile(工程常用)

示例 Makefile

CXX = g++
CXXFLAGS = -std=c++17 -Wall -Wextra -O2
LDFLAGS = -lpthread

TARGET = app
SRCS = main.cpp foo.cpp
OBJS = $(SRCS:.cpp=.o)

$(TARGET): $(OBJS)
	$(CXX) $(OBJS) -o $(TARGET) $(LDFLAGS)

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -f $(OBJS) $(TARGET)

编译:

make
make clean

三、使用 CMake(推荐,跨平台)

1️⃣ 最小 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyApp)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(app main.cpp foo.cpp)

2️⃣ 常用编译选项配置

add_compile_options(-Wall -Wextra -O2)

或针对某个 target:

target_compile_options(app PRIVATE -Wall -Wextra -O2)

3️⃣ 链接库

target_link_libraries(app pthread)

4️⃣ 编译流程

mkdir build
cd build
cmake ..
make

四、调试 & 优化选项对照

目的 推荐选项
调试 -g -O0
发布 -O2-O3
严格检查 -Wall -Wextra -Werror
C++ 标准 -std=c++17

五、查看当前 g++ 支持的标准

g++ --version
g++ -std=c++17 -dM -E -x c++ /dev/null | grep __cplusplus

六、常见错误示例

❌ 忘记链接库:

undefined reference to `pthread_create`

✅ 解决:

g++ main.cpp -lpthread

如果你愿意,可以告诉我:

  • 用的是 g++ / clang++
  • 项目规模(单个文件 / 多文件 / 大型工程)
  • 是否需要 调试 / 发布 / 跨平台

我可以给你一个完全贴合你项目的编译配置方案

0