我正在尝试在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在链接时没有找到库?你可能已经猜到我对共享库的东西很新。

有什么想法吗?

有帮助吗?

解决方案

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top