在 Ubuntu 上使用 C++ 时“找不到头文件”(如 #include <xxx.h> 报错:fatal error: xxx.h: No such file or directory),常见原因和解决办法如下:
Ubuntu 中 运行时库 和 开发头文件 是分开的。
例如:
#include <opencv2/opencv.hpp>
报错:
fatal error: opencv2/opencv.hpp: No such file or directory
✅ 解决:
sudo apt update
sudo apt install libopencv-dev
规律:
libxxx:运行时库libxxx-dev:头文件 + 静态库(开发用)例如:
#include <iostream>
也找不到
✅ 解决:
sudo apt install g++ build-essential
检查:
g++ --version
例如你自己放的头文件:
~/mylib/include/foo.h
编译时要加:
g++ main.cpp -I~/mylib/include
❌ 错误写法:
#include "include/foo.h" // 容易错
✅ 推荐:
#include "foo.h"
并加 -I 参数
-I 和 -l例如:
#include <curl/curl.h>
解决:
sudo apt install libcurl4-openssl-dev
g++ main.cpp -lcurl
extern "C"例如:
#include <stdio.h>
一般没问题,但某些库需要:
extern "C" {
#include <some_c_lib.h>
}
include_directories(/path/to/include)
或现代写法:
target_include_directories(myapp PRIVATE /path/to/include)
你可以对照一下:
*-dev 包?-I 指定头文件路径?-l 链接库?你可以直接贴出:
#include我可以一步一步帮你查到“到底缺哪一个包 / 哪一条参数”。