0

我们的网络最近从 CentOS 5 切换到 CentOS 6。使用 gcc 编译后,我们发现在链接时我们发现了这个错误。

/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status

现在看来,在 CentOS5 中,我们的编译器会绕过它。

/usr/bin/ld: skipping incompatible /usr/lib/libz.a when searching for -lz

我们正在使用经过大量修改的 SCons 编译工具 (http://www.scons.org/)。我无法弄清楚这个错误,我不知道从哪里开始。这些错误的唯一区别是一台机器使用centOS 5,另一台使用centOS6。有没有人有什么建议?

Ĵ

4

1 回答 1

2

我无法弄清楚这个错误,我不知道从哪里开始。

问题是您正在构建 64 位程序,而链接器正在查找 32 位 libz.a,反之亦然。

在您的 CentOS5 机器上,链接器会跳过这个不兼容的,并在其他地方libz.a找到另一个。libz.a

在你的 CentOS6 机器上,其他地方不存在,所以你得到一个错误。

您可以找出libz.aCentOS5 机器正在使用哪台机器:将-Wl,-t标志添加到您的链接行并查看输出。然后找到libz.a属于哪个包,安装到你的CentOS6机器上。

于 2012-06-04T02:46:13.777 回答