我想选择openmpi作为我的并行编译器,并将其添加到 .profile 中的LD_LIBRARY_PATH
。当我编译代码时,它工作并生成了一个.o文件。但是当我运行.o文件时出现错误:
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 是一个登录shell
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。一切都安定下来了!答案 0 :(得分:1)
您正在导出PATH,可能稍后会覆盖它。
您需要将代码添加到~/.bash_profile
。它是为登录shell执行的个人初始化文件。