gpt4 book ai didi

shared-libraries - MPI - 加载共享库时出错

转载 作者:行者123 更新时间:2023-12-01 18:01:11 27 4
gpt4 key购买 nike

我遇到的问题已经在这里解决了: Loading shared library in open-mpi/ mpi-run

我不知道如何设置 LD_LIBRARY_PATH或指定-x LD_LIBRARY_PATH当我的安装本身指定必要的 -L 参数时,修复了问题。我的安装在 ~/mpi/

我还包含了我的编译链接配置。

$ mpic++ -showme:version 
mpic++: Open MPI 1.6.3 (Language: C++)

$ mpic++ -showme
g++ -I/home/vigneshwaren/mpi/include -pthread -L/home/vigneshwaren/mpi/lib
-lmpi_cxx -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil -lm -ldl

$ mpic++ -showme:libdirs
/home/vigneshwaren/mpi/lib

$ mpic++ -showme:libs
mpi_cxx mpi dl m rt nsl util m dl % Notice mpi_cxx here %

当我用 mpic++ <file> 编译时并运行 mpirun a.out我收到(共享库)链接器错误

error while loading shared libraries: libmpi_cxx.so.1: 
cannot open shared object file: No such file or directory

已通过设置 LD_LIBRARY_PATH 修复了该错误。问题是如何以及为什么?我缺少什么?为什么是LD_LIBRARY_PATH当我的安装看起来不错时需要。

最佳答案

libdllibmlibrtlibnsllibutil 都是必不可少的系统范围的库,它们是非常基本的操作系统安装的一部分。 libmpilibmpi_cxx 是 Open MPI 安装的一部分,在您的情况下,它们位于非标准位置,必须显式包含在链接器搜索路径中 LD_LIBRARY_PATH

可以修改 Open MPI 编译器包装器的配置,并使它们将 -rpath 选项传递给链接器。 -rpath 获取库路径并将其附加到存储在可执行文件内的列表,该列表告诉运行时链接编辑器(也称为动态链接器)在查询 之前在哪里搜索库LD_LIBRARY_PATH 变量。例如,在您的情况下,以下选项就足够了:

-Wl,-rpath,/home/vigneshwaren/mpi/lib

这会将 Open MPI 库的路径嵌入到可执行文件中,并且该路径在运行时是否是 LD_LIBRARY_PATH 的一部分并不重要。

要使相应的包装器将该选项添加到编译器标志列表中,您必须修改 mpiXX-wrapper-data.txt 文件(其中 XXccc++CCf90 等),位于 mpi/share/openmpi/。例如,要使 mpicc 通过该选项,您必须修改 /home/vigneshwaren/mpi/share/openmpi/mpicc-wrapper-data.txt 并添加以下是以 linker_flags= 开头的行:

linker_flags= ... -Wl,-rpath,${prefix}/lib

${prefix} 由包装器自动扩展到当前 Open MPI 安装路径。

关于shared-libraries - MPI - 加载共享库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14769599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com