我是Ubuntu的全新用户。出于研究目的,我需要安装ShengBTE软件在下文中,我复制了对汇编很重要的文本。根据文本,我下载了软件并转到src目录,它包含Makefile和其他f90扩展文件。在src目录外有一个arch.make.example,我将其移到src目录,然后在终端中只写了“make”,但它不起作用。

“要编译代码,只需在Src子目录中运行make即可但其中必须存在合适的arch.make目录。示例如arch.make.example所示。至少,$MPIFC必须包含有效的命令,才能使用编译Fortran 90代码MPI指令,而$LDFLAGS和$LIBS的组合必须包含链接到实施LAPACK并对抗多哥Atsushi spglib。盛必特使用了一些Fortran 2003扩展,尤其是它的新语法数组初始化,需要最新的Fortran编译器支持他们;gfortran和ifort的现代版本众所周知工作。要使用启用OpenMP线程的相关编译器进行编译还必须使用标志。编译成功后,一个ShengBTE二进制文件将在分发的根目录中创建。这个可执行文件不接受命令行选项,也不接受来自终端。"

这是arch.make.example

export FFLAGS=-traceback-debug-O2-static_intel-qopenmpexport LDFLAGS=-L/home/user/REPOSITORY/spglib/lisymspg导出MPIFC=mpif90MKL=$(MKLROOT)/lib/em64t/libmkl_lapack95_lp64.a-Wl,--启动组\$(MKLROOT)/lib/em64t/libmkl_intel_lp64.a\$(MKLROOT)/lib/em64t/libmkl_sequential.a\$(MKLROOT)/lib/em64t/libmkl_core.a-Wl,--end-group-lpthread-lm导出LAPACK=$(MKL)导出LIBS=$(LAPACK)

请大家一步一步地指导,如何安装该软件?

1答案1

重置为默认值

这个arch.make.示例文件的目标似乎是使用Intel ifort工具链构建静态链接的可执行文件。然而,我能够使用以下步骤在Ubuntu 24.04上使用gfortran构建动态链接版本:

  1. 安装gfortran和OpenMPI以及所需的MKL开发包

    sudo apt安装gfortran libopenmpi-dev\libmkl核心libmkl-threading-dev libmkl-interface-dev
  2. 安装Spglib开发包

    sudo apt安装libsymspg-dev
  3. 创建高级/arch.make基于提供的arch.make.示例具有以下最小差异

    $diff-按arch.make.example Src/arch.makeexport FFLAGS=-traceback-debug-O2-static_intel-qopen|导出FFLAGS=-g-O2-fPIC-fopenmpexport LDFLAGS=-L/home/user/REPOSITORY/spglib/lib-lsyms|导出LDFLAGS=-L/usr/lib/x86_64-linux-gnu-lsymspgexport MPIFC=mpif90导出MPIFC=mpif90MKL=$(MKLROOT)/lib/em64t/libmkl_lapack95_lp64.a-Wl,--st|MKL=$(MKDROOT)/lib/x86_64-linux-gnu/libmkl_lapack95_lp64.a-W$(MKLROOT)/lib/em64t/libmkl_intel_lp64.a |$(MKLROOT)/lib/x86_64-linux-gnu/libmkl_inter_lp64.so$(MKLROOT)/lib/em64t/libmkl_sequential.a|$(MKCROOT)/lib/x86_64-linux-gnu/libmkl_sequential.so$(MKLROOT)/lib/em64t/libmkl_core.a-Wl,--最终组-lpt|$(MKDROOT)/lib/x86_64-linux-gnu/libmkl_core.so-W1,--最终groexport LAPACK=$(MKL)export LABACK=$export LIBS=$(LAPACK)export LIBS=$(LABACK)

然后你应该能够简单地制作内部高级工程师子目录。

如果你真的需要一个静态构建的可执行文件,那就需要更多的工作,因为Ubuntu包似乎不提供存档(静态)库libmkl_core。libsymspg。.

6
  • Ubuntu 22.04有.a文件:$apt-file search libsymspg.a libsyms pg-dev:/usr/lib/x86_64-linux-gnu/libsymspg.a$apt-file search libmkl_core.a libmkl-computational-dev:/usr/lib/x86_64-linux-gnu/libmkl_core。 评论 5月22日2:51
  • @ubfan1谢谢-看起来24.04 libmkl-computational-dev也有libmkl_core.a库(不知道我怎么错过了),所以只有libsymspg-dev不同。我还注意到我在构建中留下了(静态)libmkl_lapack95_lp64.a—我将再看一眼,看看我可以在2004年22月用更少的makefile更改完成构建 评论 5月22日12:04
  • @steeldriver我在虚拟机上使用Ubuntu 24.04。您似乎更改了arch.make中的目录。例如:您按如下方式使用了lsymspg export LDFLAGS=-L/usr/lib/x86_64-linux-gnu-lsymspg我刚刚检查了我的目录,对于我来说应该是export LDFLAGS=-L/home/hasan/anaconda3/lib/python3.11/site-packages/spglib/lib-lsymspg我的问题是,我必须相应地为MKL更改目录吗?如何在简单的命令中找到这些目录并将其粘贴到arch.make?谢谢! 评论 5月22日14:44
  • @马里兰州。如果您从Ubuntu存储库安装了MKL包,并且您的VM架构是x86_64,那么我使用的路径应该是正确的。如果您以其他方式(例如通过水蟒)安装了MKL,那么您需要自己解决这个问题-对不起 评论 5月22日15:04
  • @钢铁司机你说得对。我只是复制了你在arch.make中写的内容,然后运行make,没有收到任何错误消息。当时软件似乎编译成功了。谢谢您!关于静态链接,还有一件事,你能给我一些提示吗? 评论 5月22日15:17

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.