编译APBS程序时出现CMake错误,寻求解决方案
解决APBS编译时的两个CMake错误
嘿,你在编译APBS时碰到的这两个CMake问题我之前也帮人处理过,咱们一步步来搞定:
1. 缺失/无效的rpc/rpc.h头文件,XDR支持被禁用
这个问题本质是现代Linux发行版(比如Ubuntu 20.04+、CentOS 8+)已经把传统RPC相关的头文件和库移到了tirpc(Transport Independent RPC)包里,默认没安装。按你的系统类型来操作:
Debian/Ubuntu系
先安装tirpc开发包:
sudo apt update && sudo apt install libtirpc-dev
然后重新跑CMake时,手动指定头文件和库的路径,让CMake能找到它:
cmake .. -DCMAKE_INCLUDE_PATH=/usr/include/tirpc -DCMAKE_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
RedHat/CentOS/Rocky Linux系
安装对应开发包:
sudo dnf install libtirpc-devel
再带路径参数运行CMake:
cmake .. -DCMAKE_INCLUDE_PATH=/usr/include/tirpc -DCMAKE_LIBRARY_PATH=/usr/lib64
macOS(用Homebrew)
先装tirpc:
brew install tirpc
然后用brew的路径来配置CMake:
cmake .. -DCMAKE_INCLUDE_PATH=$(brew --prefix tirpc)/include -DCMAKE_LIBRARY_PATH=$(brew --prefix tirpc)/lib
这样操作后,CMake就能找到rpc/rpc.h,XDR支持也会正常启用。
2. install FILES given no DESTINATION 错误
这个是maloc子项目的CMake配置漏了安装路径参数,得手动改一下文件:
- 打开
externals/fetk/maloc/src/CMakeLists.txt,找到第40行的install(FILES ...)语句 - 在语句末尾加上
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/maloc,比如原来的代码是:
修改后变成:install(FILES maloc.h mem.h etc.h)install(FILES maloc.h mem.h etc.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/maloc) - 保存文件后,删掉之前生成的CMake缓存和临时文件:
rm -rf CMakeCache.txt CMakeFiles - 重新运行
cmake ..和后续的编译命令就行。
做完这两步,你的APBS编译应该就能顺利推进了。
内容的提问来源于stack exchange,提问作者sphero




