在 Ubuntu 下用 C++ 编译时“找不到头文件”,通常不是 Ubuntu 的问题,而是 开发环境不完整或路径不对。下面按最常见原因 → 解决方案给你系统排查一遍。
stdio.h、iostream)#include <iostream>
报错类似:
fatal error: iostream: No such file or directory
✅ 解决:安装 build-essential
sudo apt update
sudo apt install build-essential
这个包包含:
gccg++libc6-devopencv2/opencv.hpp)#include <opencv2/opencv.hpp>
报错类似:
fatal error: opencv2/opencv.hpp: No such file or directory
✅ 解决:安装对应的 dev 包
例如 OpenCV:
sudo apt install libopencv-dev
常见库名规则:
| 库名 | 开发包 |
|---|---|
| boost | libboost-all-dev |
| openssl | libssl-dev |
| curl | libcurl4-openssl-dev |
| mysql | libmysqlclient-dev |
✅ 记住:Ubuntu 里头文件在 -dev 包里
#include "mylib.h"
✅ 检查:
mylib.h 是否在当前目录或者指定路径:
g++ main.cpp -I./include
查看 g++ 默认搜索路径:
echo | g++ -v -x c++ -E -
正常应包含:
/usr/include
/usr/include/c++/12 (版本号可能不同)
如果没有,可能是:
libstdc++-dev✅ 修复:
sudo apt install libstdc++-dev
gcc main.cpp
✅ 正确方式:
g++ main.cpp
或指定 C++ 标准:
g++ -std=c++17 main.cpp
include_directories(/usr/include/opencv4)
或:
find_package(OpenCV REQUIRED)
target_link_libraries(app ${OpenCV_LIBS})
如果 find_package 失败,说明:
-dev 包/usr运行这些命令,逐项确认:
g++ --version
ls /usr/include/c++/
apt list --installed | grep build-essential
你可以直接贴出:
1️⃣ 完整报错信息
2️⃣ 编译命令
3️⃣ 是 系统头文件 还是 第三方库 / 自己写的头文件
我可以一步一步帮你定位到具体原因 ✅