我想选择openmpi作为我的并行c编译器,并将其添加到我的LD_LIBRARY_PATH
的.profile。当我编译代码时,它工作并生成了一个.o文件。但是,当我跑的.o文件时出现的错误:Changeable LD_LIBRARY_PATH
error while loading shared libraries: libmpi.so.0: cannot open shared object file: No such file or directory
我的同事告诉我,也许我没有加了openmpi LIB权利。我检查了我的的.profile并做了一些技巧,相应的剪辑如下:
export LD_LIBRARY_PATH=/apps/openmpi-1.4.3/lib:${LD_LIBRARY_PATH}
echo
echo "HERE is .profile!"
echo
echo $LD_LIBRARY_PATH
echo
然后我退出并重新登录,它说:
HERE is .profile!
/apps/openmpi-1.4.3/lib:/usr/...
然而,当我输入终端echo $LD_LIBRARY_PATH
,/apps/openmpi ...部分丢失,只剩下剩下的部分。 LD_LIBRARY_PATH
变化如此之快? 我试图执行另一个命令:
. .profile
的“了openmpi”的部分又走了出来,.o文件将工作顺利。 造成LD_LIBRARY_PATH
不同的原因是什么?据我所知,.profile是一个登录外壳。
ps:我使用MAC osX和bash。
@jherran:我试过你说的,但它似乎不工作。其实我曾经在我的.bashrc和.bash_profile中添加LD_LIBRARY_PATH。在.profile中添加另一行:
[ -r ~/.bashrc ] && source ~/.bashrc
我刚才测试了一遍。删除.profile中的LD行,并将其添加到.bash_profile中,然后退出然后登录。此时,echo $ LD_LIBRARY_PATH不会输出... openmpi。但如果我输入相同的 . .bash_profile
它的工作原理!
好吧,刚来更新消息,之所以出现上述情况我仍然找不到,最后我转向另一个并行编译器mpich。一切都安定了
尝试在'/ etc/environment'中设置它? LD_LIBRARY_PATH =/apps/openmpi-1.4.3/lib – jherran 2014-12-02 11:13:55
@jherran:不,我正在开发一个集群,并且没有授权对根目录下的文件进行任何更改。我不认为它应该如此神秘,因为我的同事们从未遇到过这样的问题。 T_T。 – Schawn 2014-12-02 11:23:35