2012-02-23 58 views
0

所以我试图在WIEN2k中使用GotoBLAS2,在使用make之后,我发现GotoBLAS的构建是完整的(当然,make没有报错)。快速检查文件显示libgoto2_prescottp-r1.13.alibgoto2_prescottp-r1.13.so包含在目录/Research/GotoBLAS2中。然而,使用一个小的测试程序,仔细检查我的工作,我会遇到以下问题:这个链接到共享库有什么问题?

[email protected]:~/Research/Sr2YRuO6-110914$ gfortran Fit-4.2K-0T-110803test.f -L../GotoBLAS2 -lgoto2_prescottp-r1.13 -o Fit-4.2K-0T-110803test.x 
[email protected]:~/Research/Sr2YRuO6-110914$ ./Fit-4.2K-0T-110803test.x 
./Fit-4.2K-0T-110803test.x: error while loading shared libraries: libgoto2_prescottp-r1.13.so: cannot open shared object file: No such file or directory 

我承认,我是相当陌生链接共享库,但据我可以告诉我的呼叫使用是适当的。任何人都可以帮忙吗?谢谢!

+0

如果我的答案解决了您的问题,请“接受”答案。如果没有,请让我知道目前的问题是什么,我会尽力帮忙。 – acm 2012-02-24 14:49:25

回答

1

问题是,当您通过-L标志告诉工具链在链接时查找共享库的位置时,您尚未向加载程序提供有关在运行时从何处查找相关库的任何信息。因此,当您尝试运行可执行文件时,它无法找到该库。

你不会说你正在运行的是什么操作系统,但我会猜测Linux或者其他基于你的命令的unix-y的东西。在这种情况下,您可以在环境中为LD_LIBRARY_PATH(适用于Linux的man ld-linux.so,或任何运行时链接程序的名称)导出值,也可以在链接时在可执行文件中设置DT_RUNPATH条目以记录库要搜索的路径(man ld,或任何你的链接器在你的系统上)。

+0

再次感谢您的回复。我在我的实验室中的几台机器上安装了一些软件,我的顾问不知不觉地在其他机器上输出了LD_LIBRARY_PATH的值,所以他的指示并未解决这个问题。但是,添加适当的库路径会立即解决问题。 – HowNowBrownSprow 2012-03-02 01:49:16