温馨提示×

ubuntu c++编译选项怎么设

小樊
65
2026-09-08 09:40:24
栏目: 编程语言

在 Ubuntu 下用 C++ 编译,常见方式有 g++ / clang++ 命令行 和 构建系统(Makefile / CMake)。下面按使用场景给你整理一份实用指南。


一、最基础的 g++ 编译

1. 编译单个文件

g++ main.cpp -o main

2. 常用编译选项

g++ -std=c++17 main.cpp -o main

常用标准:

  • -std=c++11
  • -std=c++14
  • -std=c++17
  • -std=c++20

二、推荐的开发编译选项(调试用)

g++ -std=c++17 -g -O0 -Wall -Wextra main.cpp -o main

含义:

  • -g:生成调试信息(配合 gdb)
  • -O0:不优化(调试更直观)
  • -Wall -Wextra:开启常见警告

三、发布版本编译选项

g++ -std=c++17 -O2 -DNDEBUG main.cpp -o main

或更高性能:

g++ -std=c++17 -O3 -march=native -DNDEBUG main.cpp -o main

四、多个源文件编译

g++ main.cpp foo.cpp bar.cpp -o app

或分步编译:

g++ -c main.cpp
g++ -c foo.cpp
g++ main.o foo.o -o app

五、链接第三方库(如 pthread、math)

g++ main.cpp -lpthread
g++ main.cpp -lm

示例(OpenCV):

g++ main.cpp `pkg-config --cflags --libs opencv4`

六、用 Makefile 设置编译选项

示例 Makefile:

CXX = g++
CXXFLAGS = -std=c++17 -Wall -Wextra -g
TARGET = app
SRCS = main.cpp foo.cpp

$(TARGET): $(SRCS)
	$(CXX) $(CXXFLAGS) $(SRCS) -o $(TARGET)

clean:
	rm -f $(TARGET)

使用:

make
./app

七、用 CMake 设置编译选项(推荐)

CMakeLists.txt 示例:

cmake_minimum_required(VERSION 3.10)
project(demo)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_compile_options(-Wall -Wextra -g)

add_executable(app main.cpp foo.cpp)

构建:

mkdir build && cd build
cmake ..
make

八、常用实用选项速查

选项 作用
-I 指定头文件路径
-L 指定库路径
-l 链接库
-pthread 支持多线程
-static 静态链接
-fsanitize=address 内存错误检测

示例:

g++ main.cpp -I./include -L./lib -lmylib -pthread

如果你有 具体场景(比如:多线程 / OpenCV / 嵌入式 / 内核模块 / 性能优化),可以告诉我,我给你更精确的编译选项。

0 踩