在 Ubuntu 上用 C++ 编译时“找不到头文件”,通常不是代码写错,而是环境或路径问题。下面按最常见原因逐一说明,并给出对应解决办法。
很多头文件(如 stdio.h、iostream、opencv2/...、mysql.h)不在系统默认安装里。
✅ 检查是否装了基础开发环境:
sudo apt update
sudo apt install build-essential
build-essential 包含:
gccg++make例如:
| 头文件 | 需要安装的包 |
|---|---|
#include <opencv2/opencv.hpp> |
libopencv-dev |
#include <mysql.h> |
libmysqlclient-dev |
#include <curl/curl.h> |
libcurl4-openssl-dev |
#include <alsa/asoundlib.h> |
libasound2-dev |
✅ 安装示例:
sudo apt install libopencv-dev
例如你自己写的头文件:
#include "myheader.h"
但不在当前目录或指定路径。
✅ 用 -I 指定路径:
g++ main.cpp -I./include
fatal error: xxx.h: No such file or directory
✅ 搜索系统中是否存在:
find / -name xxx.h 2>/dev/null
如果存在但不在标准路径:
g++ main.cpp -I/path/to/xxx
<iostream>sudo apt install g++ build-essential
ls /usr/include
C/C++ 标准头一般在这里:
/usr/include/usr/include/c++/include_directories(/path/to/include)
或
find_package(OpenCV REQUIRED)
target_link_libraries(app ${OpenCV_LIBS})
编译前请确认:
build-essential-dev 包已安装-I 指定了自定义头路径g++ 而非 gcc(C++)如果你愿意,可以把下面信息发我:
#include 用的是什么头g++ main.cpp)我可以直接告诉你缺哪个包、该装什么、加什么参数。