我正在尝试编译python包https://github.com/jrs65/scalapy,它封装了mkl、scalapack和blacs库。但是,当我尝试执行测试程序时,编译是成功的:
Intel MKL致命错误:无法加载符号MKLMPI_Get_wrappers
我试着用mkl_link_tool来获得链接线。这就是在distutils罩下发生的事情
gcc -pthread -shared -L/scratch/apc/lukrazi/intel/intelpython3/lib -Wl,-rpath=/scratch/apc/lukrazi/intel/intelpython3/lib,--no-as-needed -z noexecstack -z relro -z now -fstack-protector build/temp.linux-x86_64-3.6/build/src.linux-x86_64-3.6/scalapy/lowlevel/redistmodule.o build/temp.linux-x86_64-3.6/build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/scalapy/lowlevel/fortranobject.o -L/scratch/apc/lukrazi/intel/intelpython3/lib -lpython3.6m -o build/lib.linux-x86_64-3.6/scalapy/lowlevel/redist.cpython-36m-x86_64-linux-gnu.so -I/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/include -L/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib/release_mt -L/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib/release_mt -Xlinker -rpath -Xlinker /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/2107.0.0/intel64/lib/release_mt -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/2017.0.0/intel64/lib -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread -L/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mkl/lib/intel64 -Wl,--no-as-needed -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm -ldl -fopenmp我还尝试了使用-Wl,-Bstatic -Wl,--start-group和-Wl,--end-group -Wl,-Bdynamic进行静态链接。
gcc -pthread -shared -L/scratch/apc/lukrazi/intel/intelpython3/lib -Wl,-rpath=/scratch/apc/lukrazi/intel/intelpython3/lib,--no-as-needed -z noexecstack -z relro -z now -fstack-protector build/temp.linux-x86_64-3.6/build/src.linux-x86_64-3.6/scalapy/lowlevel/redistmodule.o build/temp.linux-x86_64-3.6/build/src.linux-x86_64-3.6/build/src.linux-x86_64-3.6/scalapy/lowlevel/fortranobject.o -L/scratch/apc/lukrazi/intel/intelpython3/lib -lpython3.6m -o build/lib.linux-x86_64-3.6/scalapy/lowlevel/redist.cpython-36m-x86_64-linux-gnu.so -I/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/include -L/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib/release_mt -L/scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib -Xlinker --enable-new-dtags -Xlinker -rpath -Xlinker /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib/release_mt -Xlinker -rpath -Xlinker /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mpi/intel64/lib -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/2107.0.0/intel64/lib/release_mt -Xlinker -rpath -Xlinker /opt/intel/mpi-rt/2017.0.0/intel64/lib -lmpifort -lmpi -lmpigi -ldl -lrt -lpthread -Wl,-Bstatic -Wl,--start-group /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mkl/lib/intel64/libmkl_scalapack_lp64.a /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.a /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mkl/lib/intel64/libmkl_intel_lp64.a /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mkl/lib/intel64/libmkl_intel_thread.a /scratch/apc/lukrazi/intel/compilers_and_libraries_2018.1.148/linux/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -Wl,-Bdynamic -liomp5 -lpthread -lm -ldl -fopenmp没有成功。有什么问题吗?
发布于 2019-11-17 01:08:19
您有两个选项: a)通过
-ld -shared --whole-archive libmkl_blacs_openmpi_lp64.a -no-whole-archive -o libmkl_blacs_openmp_lp64.so
或者通过添加静态库链接到静态库
-Wl,-Bstatic -Wl,--start-group和
-Wl,--end-group -Wl,-Bdynamichttps://stackoverflow.com/questions/58762653
复制相似问题