可更改的LD_LIBRARY_PATH

时间:2014-12-02 10:12:35

标签: bash path

我想选择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。一切都安定下来了!

1 个答案:

答案 0 :(得分:1)

您正在导出PATH,可能稍后会覆盖它。

您需要将代码添加到~/.bash_profile。它是为登录shell执行的个人初始化文件。