linux上的共享库问题

时间:2008-10-12 17:30:10

标签: linux gcc shared-libraries

我正在尝试在Linux系统上编译/链接非常旧软件,但由于某种原因,我无法链接到我系统上安装的共享库。

我从链接器收到以下错误:

/usr/bin/ld: cannot find -lXaw

但是,lib本身已安装。如果我跑

ldconfig -v | grep libXaw

我得到了(其中包括)这个命中:

libXaw.so.7 -> libXaw7.so.7.0.0

库及其链接位于/ usr / lib btw中。所以没什么特别的。

所以库在那里,ldconfig找到它。什么可能导致ld在链接时没有找到库?你可能已经猜到我对共享库的东西很新。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

链接器可能在字面上看起来是“libXaw.so”。是在/ usr / lib中吗?如果没有,您可以尝试将其添加为libXaw7.so.7.0.0的另一个软链接。

答案 1 :(得分:3)

符号链接btw的原因是在多个版本的情况下选择要链接的默认版本,请记住库的名称已集成到二进制文件中。 (你可以用ldd看到)。

答案 2 :(得分:0)

是否重写了-L库目录,并且它没有查找/ usr / lib?

答案 3 :(得分:-1)

要链接它,您需要.a文件,而不是.so文件,它是运行时库。共享对象仅对已经链接到库的非共享部分的程序有用。这通常分布在“.a”文件中。