Ubuntu 17.10下已用apt-get安装libhdf5-dev但gcc无法找到的问题
解决Ubuntu 17.10中gcc编译找不到libhdf5-dev库的问题
Hey,我之前也碰到过类似的情况——明明用apt-get装了libhdf5-dev,编译时却死活找不到库,大概率是编译参数没配对或者库路径的小细节没注意到,试试下面这些方法:
1. 先确认库文件是否真的安装到位
首先用这条命令查看libhdf5-dev安装的所有文件,确保头文件和库文件确实存在:
dpkg -L libhdf5-dev
正常情况下你应该能看到类似这些路径:
- 头文件:
/usr/include/hdf5/serial/hdf5.h - 库文件:
/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so
如果这些路径不存在,说明安装可能出了问题,执行sudo apt-get install --reinstall libhdf5-dev重新安装修复即可。
2. 用pkg-config自动获取编译参数
HDF5的库链接需要特定的参数,手动加-lhdf5经常不够用,最好用pkg-config来自动生成正确的编译和链接选项。把你的编译命令改成这样:
gcc your_source_code.c -o your_program $(pkg-config --cflags --libs hdf5)
如果执行时提示Package hdf5 was not found in the pkg-config search path,先手动添加pkg-config的搜索路径:
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
然后执行pkg-config --list-all | grep hdf5,如果能看到hdf5的条目,说明路径配置成功了。
3. 手动指定头文件和库路径(如果pkg-config不管用)
Ubuntu 17.10里的libhdf5-dev可能把文件放在serial子目录下,手动指定路径的编译命令如下:
gcc your_source_code.c -o your_program -I/usr/include/hdf5/serial -L/usr/lib/x86_64-linux-gnu/hdf5/serial -lhdf5
-I用来指定头文件搜索路径,解决找不到hdf5.h的问题-L用来指定库文件搜索路径,解决链接时找不到libhdf5的问题-lhdf5告诉链接器要链接HDF5库
4. 检查具体的错误信息
如果还是不行,把编译时的错误信息贴出来会更有助于精准排查:
- 如果是
fatal error: hdf5.h: No such file or directory:说明头文件路径没加对 - 如果是
undefined reference toH5Fcreate'`这类链接错误:说明库没正确链接
内容的提问来源于stack exchange,提问作者Victor Poughon
相关产品推荐
相关产品推荐

