我该如何修复“无法找到 -lccp4c”以安装带有密度拟合的 Gromacs?

我该如何修复“无法找到 -lccp4c”以安装带有密度拟合的 Gromacs?

我正在尝试根据此链接底部提供的协议安装具有自动密度拟合功能的 gromacs 5.0.7:https://www.mpibpc.mpg.de/grubmueller/densityfitting

不幸的是,我不知道从哪里开始安装 ccp4 部分,并且只有在到达“make”部分后才开始安装它。

“make”之后,出现以下错误:

[ 97%] Building C object src/gromacs/CMakeFiles/libgromacs.dir/utility/baseversion-gen.c.o
[ 97%] Linking CXX shared library ../../lib/libgromacs.so
/usr/bin/ld: cannot find -lccp4c
collect2: error: ld returned 1 exit status
src/gromacs/CMakeFiles/libgromacs.dir/build.make:17155: recipe for target 'lib/libgromacs.so.0.0.0' failed
make[2]: *** [lib/libgromacs.so.0.0.0] Error 1
CMakeFiles/Makefile2:1460: recipe for target 'src/gromacs/CMakeFiles/libgromacs.dir/all' failed
make[1]: *** [src/gromacs/CMakeFiles/libgromacs.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

如果你们能帮助我,我将非常感激。

编辑 1-使用 Eliah'a Answer 进行更新

使用安装 libccp4 之后

sudo apt update
sudo apt install libccp4-dev

我仍然收到错误代码,因此使用以下方式安装 fftw

sudo apt-get install fftw3 fftw3-dev pkg-config

此后,我又将源文件导入并使用make,结果 100% 编译通过!然后我执行了make check,结果似乎成功了。

此后,我尝试安装并出现以下错误:

    bys@bys-Precision-Tower-3620:~/Desktop/gromacs-5.0.7-densfit/build$ sudo make install
[  0%] Building NVCC (Device) object src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir/cuda_tools_generated_pmalloc_cuda.cu.o
nvcc fatal   : Unsupported gpu architecture 'compute_20'
CMake Error at cuda_tools_generated_pmalloc_cuda.cu.o.Release.cmake:219 (message):
  Error generating
  /home/bys/Desktop/gromacs-5.0.7-densfit/build/src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir//./cuda_tools_generated_pmalloc_cuda.cu.o


src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir/build.make:77: recipe for target 'src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir/cuda_tools_generated_pmalloc_cuda.cu.o' failed
make[2]: *** [src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir/cuda_tools_generated_pmalloc_cuda.cu.o] Error 1
CMakeFiles/Makefile2:1503: recipe for target 'src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir/all' failed
make[1]: *** [src/gromacs/gmxlib/cuda_tools/CMakeFiles/cuda_tools.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make: *** [all] Error 2

我认为这是一个涉及 Nvidia CUDA 工具包和驱动程序的错误。我该如何修复它?

答案1

安装该libccp4-dev包。 无论您使用哪个 Ubuntu 版本,该软件包都应该可用。安装它的一个好方法是运行:

sudo apt update
sudo apt install libccp4-dev

libccp4-dev软件包直接提供 CCP4 库的头文件,您需要这些头文件来编译使用这些库的软件,并且还声明了对提供库二进制文件和数据文件的其他软件包的依赖关系,从而导致它们也被安装。这包括libccp4c0提供您要链接的二进制文件的软件包。

然后,为了使用 Density Fit 构建 Gromacs,我建议您转到顶层源目录(即,解压档案时创建的目录)并运行:

rm -r build  # omit if you already deleted the old build directory
mkdir build
cd build
CCP4INC=/usr/include/ccp4/
cmake .. -DCMAKE_C_FLAGS="-I $CCP4INC" -DCMAKE_CXX_FLAGS="-I $CCP4INC"
make

(对于并行构建,您可以使用make -j5或其他东西,而不仅仅是make。对于N并行作业,使用。)make -jN

这类似于并基于该页面的底部,但我没有费心指定实际库二进制文件的位置。它能够自己找到它们。我在 Ubuntu 19.10 上测试了它,截至本文撰写时,它是开发版本(即尚未发布),因此您不会在生产系统上运行它。但我希望这也能适用于早期版本。您甚至可能不必告诉它标头在哪里——对于使用系统包管理器安装的库,这通常也不是必需的——但我做过需要这样做。

如果您最终需要指定库位置,您可以通过添加来实现-DCMAKE_EXE_LINKER_FLAGS=-L/usr/lib/x86_64-linux-gnu/,假设您的系统是带有 64 位 Intel 或 AMD 处理器的 PC 或 Mac,运行 64 位版本的 Ubuntu。

总之,cmake命令将是:

cmake .. -DCMAKE_C_FLAGS="-I $CCP4INC" -DCMAKE_EXE_LINKER_FLAGS=-L/usr/lib/x86_64-linux-gnu/ -DCMAKE_CXX_FLAGS="-I $CCP4INC"

我也在同一系统上测试了这一点,并且它也起作用了,并且随后make取得了成功。


下面是一些查找提供库的软件包的技巧,即使您不知道库中任何特定文件的名称,这在您尝试下载和构建软件时经常发生,并且由于找不到库而导致构建失败。

通常,提供库的软件包的名称以 开头,lib后跟库的名称。该apt list命令接受 globs,其中*软件包名称代表零个或多个任意字符的序列。在这种情况下,apt list 'libccp4c*'是不完美的,因为它没有列出相关的 dev 软件包。

我倾向于搜索图书馆名称中看似重要的最小子字符串,这样看起来可能会将范围缩小到足够小,然后如果结果太多而无法快速浏览,则使用较大的子字符串。我碰巧先运行apt list '*ccp4*',第一次尝试就找到了我正在寻找的内容。

然后我跑去apt show libccp4-dev确认它是不是我想的那样,apt -s install libccp4-dev看看无需实际安装即可安装。

安装软件包后,我运行程序dpkg-query -L libccp4-dev | grep -F cmaplib.h来查找包含 CCP4 标头的目录,因为我碰巧在之前的构建尝试中看到了一条提到该文件的错误消息。否则我本可以运行程序dpkg-query -L libccp4-dev并检查更多输出。

我最终不需要找到包含库二进制文件的目录(见上文),这些库二进制文件的名称通常以 结尾so,有时后跟以.- 分隔的数字序列。但如果我需要的话,dpkg-query -L libccp4c0我会这么做。

相关内容