4

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

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

/usr/bin/ld: cannot find -lXaw

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

ldconfig -v | grep libXaw

我得到(除其他外)这个打击:

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

该库及其链接位于 /usr/lib 顺便说一句。所以没什么特别的。

所以图书馆就在那里,ldconfig 找到了它。什么会导致 ld 在链接时找不到库?正如您可能已经猜到的那样,我对共享库的东西很陌生。

有任何想法吗?

4

4 回答 4

3

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

于 2008-10-12T17:40:53.677 回答
3

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

于 2009-05-11T15:56:39.993 回答
0

-L 库目录是否被覆盖,而不是在 /usr/lib 中查找?

于 2008-10-12T18:28:31.553 回答
-1

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

于 2008-10-12T17:54:44.397 回答