在 Linux 下进行 C++ 开发与配置时,排错通常分为编译错误、链接错误、运行错误、环境/配置错误几类。下面给你一套系统化的排错思路和常用命令,适合新手到进阶。
g++ main.cpp -o main
常见错误类型:
error: expected ';'fatal error: xxx.h: No such file or directoryerror: cannot convert 'int*' to 'char*'✅ 做法:
fatal error: boost/asio.hpp: No such file or directory
解决:
# 查找头文件
find / -name asio.hpp 2>/dev/null
# 指定 include 路径
g++ main.cpp -I/usr/include/boost
安装依赖示例:
sudo apt install libboost-dev
g++ -Wall -Wextra -std=c++17 main.cpp
undefined reference to `pthread_create'
✅ 解决:补链接库
g++ main.cpp -lpthread
cannot find -lxxx
查找库:
find / -name libxxx.so 2>/dev/null
指定库路径:
g++ main.cpp -L/usr/local/lib -lxxx
./main
Segmentation fault (core dumped)
✅ 用 gdb:
g++ -g main.cpp -o main
gdb ./main
(gdb) run
(gdb) bt
常见原因:
error while loading shared libraries: libxxx.so.1
解决:
ldd ./main
export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH
永久方案(谨慎):
sudo vim /etc/ld.so.conf.d/xxx.conf
sudo ldconfig
make
make: Nothing to be done for 'all'
检查:
touch 强制重编)make clean
make
CMake Error at CMakeLists.txt:10 (find_package):
By not providing "FindXXX.cmake"
✅ 检查:
find_package 名称是否正确cmake -DCMAKE_PREFIX_PATH=/your/path .
调试 CMake:
cmake --trace-expand .
which g++
g++ --version
切换:
sudo update-alternatives --config g++
GLIBCXX_3.4.30 not found
✅ 解决:
你可以直接贴:
我可以直接帮你定位并改。