|
|
本人平常工作和生活都是使用Linux系统的,使用Linux桌面系统自然会选用Arch或Arch-based发行版,主要也是为了软件追新。
之前在服务器上编译过CP2K,还没在比较新的编译器等工具上编译过,当然,Arch的AUR里面有大佬构建好的CP2K的PKGBUILD,可以直接用那个,好处是期间安装的软件都由系统的包管理接管,坏处就是软件的位置可能不是你想要的。以下是在Arch-based的Linux发行版中手动编译过程中遇到的一些小问题,主要还是参考sob老师的那个帖子,以下只记录遇到的问题,自己做个记录。
当前使用操作系统基本信息如下:
操作系统:CachyOS
内核版本:Linux 6.17.7-3-cachyos
gcc版本:15.2.1 20250813
gfortran版本:15.2.1 20250813
Shell:Fish shell 4.1.2
需要注意的问题:
1. 网络问题自行解决。
2. cmake这个就不要用系统的了,Arch上cmake最新版本是4.1.2, 在编译过程中会有问题,提示要小于3.5版本,因此就让install_cp2k_toolchain.sh自己下载相应的版本就好了,但是因此在/usr下的lib, lib32, share下产生的那些乱七八糟的文件,系统的包管理器就没法管理了,这是一个很讨厌的事情。
3. 因为编译器为gcc15,比较严格,COSTA 的头文件 mpi_type_wrapper.hpp 没有包含 <cstdint>,而代码用到了 uint32_t,这个时候会报错,因此需要改一下源代码,很简单,修改tools/toolchain/build/COSTA-2.2.2/src/costa/grid2grid/mpi_type_wrapper.hpp这个头文件,前面加一个`#include <cstdint>`,就行了。
但是你会发现,重新运行install_cp2k_toolchain.sh xxxxxxxxx还是会出问题,是因为脚本里面又重新把下载的压缩包给解压并覆盖了你修改的文件,因此还需要改一下tools/toolchain/scripts/stage4/install_cosma.sh这个文件,把下面两行注释掉:
[ -d COSTA-${costa_ver} ] && rm -rf COSTA-${costa_ver}
tar -xzf COSTA-v${costa_ver}.tar.gz
然后再运行就行了。
上面3个都没问题后,install_cp2k_toolchain.sh这个步骤就没什么问题了,后续就是tools/toolchain/install/arch/下所有文件拷到arch文件夹下面了。
4. 然后到`make -j 4 ARCH=local VERSION="ssmp psmp"`这一步了,这步也会出现小问题,编译过程中会出现CP2K 主体在编译 Fortran 源时找不到 dftd4.mod的问题(当然这个是因为我在前述步骤中加了这个DFTD4),使用命令:
- echo $(dirname "$(find tools/toolchain/install -name dftd4.mod | head -n1)")
复制代码 找到这个mod的位置,然后在arch下的local.ssmp和local.psmp文件中的FCFLAGS参数最后加上
xxx就是上面找到的路径。然后再编译就好了。
但是还是有个问题,psmp对应的cp2k可以编译,但是ssmp对应的还是会报错,那我就不管了,因为也不想用ssmp。所以干脆就直接`make -j 4 ARCH=local VERSION="psmp"`得了,不用管那个了。
之后加入环境变量什么的,都如sob老师博文中所言即可。
最后可以用`cp2k.psmp --version`看一下编译的参数。
|
评分 Rate
-
查看全部评分 View all ratings
|