温馨提示×

如何优化Ubuntu C++编译

小樊
34
2026-10-08 07:06:30
栏目: 编程语言

在 Ubuntu 上优化 C++ 编译速度和生成程序性能,可以从编译参数、构建系统、工具链、系统环境几个方面入手。下面按“实用优先级”给你一套方案。


一、编译速度优化(重点)

1. 使用更快的编译器 / 并行编译

make -j$(nproc)

或 CMake:

cmake --build build -j$(nproc)

2. 使用 ccache(强烈推荐)

避免重复编译相同代码:

sudo apt install ccache
export CC="ccache gcc"
export CXX="ccache g++"

或 CMake:

cmake -DCMAKE_CXX_COMPILER_LAUNCHER=ccache .

3. 使用 Ninja 构建系统(比 Make 快很多)

sudo apt install ninja-build
cmake -G Ninja .
ninja

4. 减少头文件依赖(非常重要)

  • 使用 前置声明
  • 使用 Pimpl 模式
  • 避免 include 整个大库

示例:

class Foo; // 前置声明

5. 使用预编译头(PCH)

CMake 示例:

target_precompile_headers(myapp PRIVATE stdafx.h)

6. 使用模块(C++20,长期方案)

import std;

需 GCC 11+ 或 Clang 16+


二、编译器优化选项(程序性能)

1. 基础优化

-O2

或极致:

-O3

2. 针对本机 CPU

-march=native -mtune=native

3. 链接时优化(LTO,效果明显)

-flto

CMake:

set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)

4. 使用更快的链接器

mold(强烈推荐)

sudo apt install mold
-Wl,--ld-path=mold

或 lld:

sudo apt install lld

三、Ubuntu 系统级优化

1. 使用最新 GCC / Clang

sudo apt install g++-12

或:

sudo apt install clang

2. 使用 tmpfs(减少磁盘 IO)

mkdir /tmp/build
mount -t tmpfs tmpfs /tmp/build

四、CMake 推荐配置示例

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS "-O3 -march=native -flto")
set(CMAKE_CXX_COMPILER_LAUNCHER ccache)

五、快速检查清单 ✅

  • [ ] 使用 -j
  • [ ] 使用 ccache
  • [ ] 使用 Ninja
  • [ ] 使用 mold
  • [ ] 开启 LTO
  • [ ] 减少头文件

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

  • 用的是 Make / CMake / Bazel
  • 项目规模(小 / 中 / 大型)
  • 是否偏 编译速度 还是 运行性能

我可以直接给你一套定制配置。

0 踩