在 Linux 下做 C++ 开发/配置,建议从 编译器、构建系统、标准库、调试工具、环境依赖 几个维度来考虑。下面按“常见坑 + 最佳实践”给你一个实用清单。
# 查看版本
g++ --version
clang++ --version
✅ 建议:
不要依赖默认标准,显式指定 -std=c++17 或更高。
g++ -std=c++17 main.cpp
常见标准:
-std=c++11-std=c++17(推荐)-std=c++20(新项目)推荐基础组合:
-Wall -Wextra -Werror -O2
解释:
-Wall -Wextra:打开常见警告-Werror:警告当错误处理(防止低级 bug)-O2:优化级别(调试时去掉)调试版本:
-g -O0
推荐工具:
| 项目规模 | 推荐 |
|---|---|
| 小项目 | CMake |
| 中大型 | CMake |
| 极简 | Makefile |
✅ CMake 是事实标准
cmake_minimum_required(VERSION 3.16)
project(demo)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(demo main.cpp)
构建方式:
mkdir build && cd build
cmake ..
make
✅ 一般桌面/服务器开发用 glibc
优先:
sudo apt install libxxx-dev
手动安装建议使用:
❌ 不推荐全局手动编译安装头文件和 .so
gdb ./a.out
✅ 推荐:
gdbcgdb(带界面)lldb(配合 Clang)valgrind --leak-check=full ./a.out
或使用 AddressSanitizer(强烈推荐):
-g -fsanitize=address
perfgprofheaptrack#include <iostream> // 系统头文件
#include "mylib.h" // 本地头文件
✅ 不要乱用绝对路径
运行时找不到 .so:
export LD_LIBRARY_PATH=/your/lib/path:$LD_LIBRARY_PATH
或:
/usr/librpath#include "Test.h" // 实际是 test.h → 会报错
\n\r\n✅ 确保代码统一 LF
windows.h#ifdef __linux__
#endif
✅ 最稳妥组合
-Wall -Wextra如果你愿意,可以告诉我:
我可以给你一份 针对你环境的完整配置模板。