非root用户安装MPICH,在make的时候提示以下错误。
GEN lib/libmpi.la
/usr/bin/ld: cannot find -lpsm_infinipath
/usr/bin/ld: cannot find -lnl-3
/usr/bin/ld: cannot find -lnl-route-3
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:11152: lib/libmpi.la] Error 1
make[2]: Leaving directory '/lustre/syliu/mpich-4.0.3'
make[1]: *** [Makefile:30211: all-recursive] Error 1
make[1]: Leaving directory '/lustre/syliu/mpich-4.0.3'
make: *** [Makefile:7291: all] Error 2
我locate了这三个的位置,发现/usr/lib64里面有,我把这些复制到自己建的一个lib里然后在环境变量里面添加发现也没什么用,不知道怎么办。我没有root权限,希望大家出出主意。
[syliu@ln1 mpich-4.0.3]$ locate libpsm_infinipath
/usr/lib/debug/usr/lib64/psm2-compat/libpsm_infinipath.so.1.debug
/usr/lib64/libpsm_infinipath.so.1
/usr/lib64/libpsm_infinipath.so.1.16
/usr/lib64/psm2-compat/libpsm_infinipath.so.1
[syliu@ln1 mpich-4.0.3]$ locate libnl-3
/usr/lib64/libnl-3.so.200
/usr/lib64/libnl-3.so.200.23.0
[syliu@ln1 mpich-4.0.3]$ locate libnl-route-3
/usr/lib64/libnl-route-3.so.200
/usr/lib64/libnl-route-3.so.200.23.0
望采纳!!!!
您可以在 configure 过程中指定可执行文件的搜索路径,例如使用以下命令进行 configure:
./configure LDFLAGS=-L/usr/lib64
这样可以让编译器在 /usr/lib64 目录下搜索可执行文件。
如果还是不行,您可以尝试使用 LD_RUN_PATH 环境变量来指定可执行文件的搜索路径,例如:
LD_RUN_PATH=/usr/lib64 make
这样可以让 make 在编译过程中使用 /usr/lib64 目录下的可执行文件。
如果以上方法都无法解决问题,您可以尝试联系 MPICH 开发团队获取更多帮助
可以试试看在编译 MPICH 时指定库文件的位置。
可以在运行 configure 脚本时指定库文件的位置,使用以下命令:
./configure LDFLAGS="-L/usr/lib64 -Wl,-rpath=/usr/lib64"
注意需要将上面的路径替换为系统上库文件的实际位置。
然后可以运行 make 命令编译 MPICH。
仅供参考,望采纳,谢谢。
这些错误提示都是缺少库文件造成的。
"cannot find -lpsm_infinipath"提示缺少libpsm_infinipath.so库文件。
"cannot find -lnl-3"和"cannot find -lnl-route-3"提示缺少libnl-3.so和libnl-route-3.so库文件。
你需要在系统上安装这些库文件,以解决这些错误。
如果你使用的是Ubuntu系统,可以使用如下命令安装这些库文件:
```sudo apt-get install libpsm-infinipath1 libnl-3-200 libnl-route-3-200
当你在非root用户下安装 MPICH 时,可能会出现“/usr/bin/ld: cannot find”错误。这可能是因为缺少一些依赖库或编译工具。
要解决这个问题,你可以尝试安装以下软件包:
build-essential:这是一组包含了 GCC 编译器和其他编译工具的软件包。
libcr0:这是一个 C 库,包含了一些常用的函数。
libcr-dev:这是 libcr0 的开发版本,包含了头文件和库文件。
你可以使用以下命令安装这些软件包:
sudo apt-get install build-essential libcr0 libcr-dev
安装完成后,再次运行“make”命令,看看是否解决了问题。
参考下这个实例思路【make报错:"/usr/bin/ld: cannot find -lXXX"】,链接:https://blog.csdn.net/adrian169/article/details/9093631
如果没有其它的办法,这样试试,把libpsm_infinipath,libnl-3, libnl-route-3
这3个库下载到本地用户在make install到本地用户的目录下,之后通过 -L 包含下本地用户的目录试试
一般是设置 ./configure --prefix=/home/xxx/yyy 的方式设置安装的地址。
或者通过static的方式,每次编译到本地。
你可以尝试在 configure 时指定库的位置,比如:
./configure LDFLAGS="-L/usr/lib64"
或者
./configure LDFLAGS="-L/usr/lib64/psm2-compat"
当然,这只是一个做法,如果还是不行的话,你可能需要检查是否还有其他的库文件缺失,或者检查一下库文件是否有足够的访问权限。
给出一个解决方法:
在编译 MPICH 的 configure 文件时,使用如下命令:
./configure LDFLAGS="-L/usr/lib64 -L/usr/lib"
这样就可以将 /usr/lib64 和 /usr/lib 添加到编译时的搜索路径中,从而解决 /usr/bin/ld 无法找到所需库文件的问题。
注意:这里所说的 /usr/lib64 和 /usr/lib 是指你所需要的库文件所在的位置。如果你的库文件所在的位置不同,请将路径改为你所需的位置。
在运行 make 命令时,应该可以正常编译了。
希望这个方法能帮到你。望采纳。
如果您想在非root用户下安装MPICH,您可以在安装时指定--prefix参数,例如:
./configure --prefix=$HOME/mpich-install
这样,MPICH就会被安装到$HOME/mpich-install目录下。然后,您可以将$HOME/mpich-install/lib目录加入到LD_LIBRARY_PATH环境变量中,然后再运行make命令。
此外,您还可以尝试使用如下命令修改文件的所有者,以便自己可以对文件进行读写操作:
chown -R $USER:$USER $HOME/mpich-install
希望这些建议能帮助您解决问题。
把找不到的三个库的路径分别加到/root/.bashrc 里面,source一次,/etc/ld.so.conf里也可以加一次,然后ldconfig一次 应该就可以找到了。
在非root用户安装MPICH时,如果在make过程中遇到了"/usr/bin/ld: cannot find"的错误,可能是因为缺少了必要的链接库。这可能是由于没有安装GCC或其他编译工具导致的。
首先,确保您已经安装了GCC或其他编译工具。如果您还没有安装,可以使用以下命令安装GCC:
sudo apt-get install gcc
其次, 确保您已经安装了对应的库或头文件. 如果是在编译MPI库, 你需要确保mpi.h和libmpi.so是存在且可见的
如果这些都没有解决问题, 你可以尝试在configure中指定 --prefix 参数, 指定安装路径, 并在LD_LIBRARY_PATH中加入相应的库文件.
./configure --prefix=$HOME/mpi
make
make install
export LD_LIBRARY_PATH=$HOME/mpi/lib:$LD_LIBRARY_PATH
如果还是无法解决问题,请检查您的configure和make命令是否输入正确,
并确保您已经在编译过程中指定了所有必要的环境变量。如果仍然而仍然无法解决问题, 可以尝试使用--enable-shared 选项在configure中, 它会告诉配置过程生成共享库,而不是静态库. 这样会生成动态链接库, 程序运行时会在运行目录或者 LD_LIBRARY_PATH 所指定的路径中寻找库文件。
./configure --enable-shared
make
make install
还有一种可能性是, 你的机器没有安装binutils,这将会导致linker在连接过程中找不到相关的库文件.
sudo apt-get install binutils
最后,如果还是无法解决问题,请确保您使用的是正确的版本的MPICH并在安装过程中没有遇到任何错误。如果仍然无法解决问题,建议您在相关社区或网站上寻求帮助。