在 Linux 下用 C++ 开发时,配置环境、编译、调试等都有些容易踩坑的地方。下面按常见关注点给你一个比较实用的清单,适合从入门到工程级。
✅ 推荐:GCC 或 Clang
GCC(最常用)
sudo apt install build-essential
包含 gcc、g++、make
Clang(错误提示友好)
sudo apt install clang
检查版本:
g++ --version
clang++ --version
⚠️ 注意:
gcc ≠ g++不要依赖默认标准。
g++ -std=c++17 main.cpp
常见标准:
-std=c++11-std=c++17(✅ 推荐)-std=c++20(新项目)⚠️ 不同编译器对 C++20 支持程度不同。
g++ -std=c++17 -Wall -Wextra -Werror main.cpp
解释:
-Wall -Wextra:打开警告-Werror:警告当错误处理-O2:优化(发布时)-g:生成调试信息(调试时)✅ 开发期:
g++ -std=c++17 -Wall -Wextra -g main.cpp
✅ 发布期:
g++ -std=c++17 -O2 main.cpp
#include <opencv2/opencv.hpp> // 报错
解决:
g++ -I/usr/include/opencv4 main.cpp
g++ -L/usr/lib/x86_64-linux-gnu -lopencv_core main.cpp
⚠️ 顺序很重要:
g++ main.cpp -lopencv_core ✅
g++ -lopencv_core main.cpp ❌
g++ -shared -fPIC xxx.cpp -o libxxx.so
运行时:
export LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH
ar rcs libxxx.a xxx.o
#include "Test.h" // Test.h ≠ test.h
✅ /
❌ \
chmod +x a.out
./a.out
CXX = g++
CXXFLAGS = -std=c++17 -Wall
main: main.cpp
$(CXX) $(CXXFLAGS) main.cpp -o main
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_CXX_STANDARD 17)
add_executable(demo main.cpp)
构建:
mkdir build && cd build
cmake ..
make
g++ -g main.cpp -o main
gdb ./main
常用:
run
break main
next
print x
valgrind ./main
❌ 用 gcc 编译 C++
❌ 忘记 -std=c++17
❌ 没加 -Wall
❌ 库顺序写反
❌ 动态库运行时找不到
❌ Windows 代码直接搬 Linux
如果你愿意,可以告诉我:
我可以给你一套更具体的 Linux C++ 配置模板。