安装R包ChemmineOB编译失败求助,系统已安装OpenBabel
解决R包ChemmineOB安装编译错误问题
你遇到的编译错误是因为R的编译环境无法找到OpenBabel的头文件openbabel/obutil.h——即便系统已安装OpenBabel,也可能是路径未被识别或缺少开发依赖导致的。以下是具体解决步骤:
错误信息
ChemmineOB.cpp:1569:10: fatal error: openbabel/obutil.h: No such file or directory 1569 | #include <openbabel/obutil.h> | ^~~~~~~~~~~~~~~~~~~~ compilation terminated. make: *** [/usr/lib/R/etc/Makeconf:177: ChemmineOB.o] Error 1 ERROR: compilation failed for package ‘ChemmineOB’ * removing ‘/home/mamata/R/x86_64-pc-linux-gnu-library/4.2/ChemmineOB’ The downloaded source packages are in ‘/tmp/Rtmpzscekt/downloaded_packages’ Warning message: In install.packages(...) : installation of package ‘ChemmineOB’ had non-zero exit status
解决步骤
安装OpenBabel开发包:多数系统默认仅安装OpenBabel运行时库,缺少头文件等开发依赖。根据你的系统执行对应命令:
- Debian/Ubuntu:
sudo apt-get install libopenbabel-dev - RHEL/CentOS:
sudo yum install openbabel-devel - Fedora:
sudo dnf install openbabel-devel
- Debian/Ubuntu:
手动指定OpenBabel路径安装:若已装开发包仍报错,需明确告知R头文件和库的位置:
- 先查询OpenBabel的实际路径:
pkg-config --cflags openbabel-3 # 获取头文件路径,示例输出:-I/usr/include/openbabel3 pkg-config --libs openbabel-3 # 获取库路径,示例输出:-L/usr/lib/x86_64-linux-gnu -lopenbabel - 在R中设置环境变量后重新安装:
Sys.setenv(CFLAGS="-I/usr/include/openbabel3") # 替换为你查询到的头文件路径 Sys.setenv(LDFLAGS="-L/usr/lib/x86_64-linux-gnu -lopenbabel") # 替换为你查询到的库路径 install.packages("ChemmineOB", type="source")
- 先查询OpenBabel的实际路径:
检查版本兼容性:ChemmineOB对OpenBabel版本有要求,执行
obabel --version查看当前版本,确保符合包的依赖要求(通常支持2.x或3.x系列)。
内容的提问来源于stack exchange,提问作者Mamata Gharti Magar
相关产品推荐
相关产品推荐

