||
网上很多ShengBTE编译安装的帖子推荐大家使用mpiifort(intel编译器)。我的系统中也有intel编译器,但是编译成功后,无法执行ShengBTE,老是报错,segmentation fault。
openmpi+gfortran+MKL编译ShengBTE
复制arch.make.example到Src目录中,并命名为arch.make
将其中内容修改为
export FFLAGS=-O3 #动态编译
export LDFLAGS=-L/usr/lib/x86_64-linux-gnu -lsymspg #库文件spglib位置
export MPIFC=mpif90.openmpi #openmpi+gfortran编译器
export MKLROOT=/opt/intel/oneapi/mkl/latest/lib/intel64 #MKL地址
MKL=$(MKLROOT)/libmkl_lapack95_lp64.a -Wl,--start-group \
$(MKLROOT)/libmkl_intel_lp64.a \
$(MKLROOT)/libmkl_sequential.a \
$(MKLROOT)/libmkl_core.a -Wl,--end-group -lpthread -lm
export LAPACK=$(MKL)
export LIBS=$(LAPACK) -ldl #加上-ldl 显示加载动态函数库
3. make
特别说明:如果在arch.make最后一行不加上-ldl,报错:
/usr/bin/ld: /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_core.a(mkl_memory_patched.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-20 04:48
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社