我想選擇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