CentOS 6产生奇怪的链接错误

时间:2012-06-04 02:29:59

标签: gcc centos scons centos6

我们的网络最近从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/)。我无法弄清楚这个bug,我不知道从哪里开始。这些错误的唯一区别是一台机器使用的是centOS 5,另一台机器使用的是centOS6。有没有人有任何建议?

Ĵ

1 个答案:

答案 0 :(得分:2)

  

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

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

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

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

您可以找到CentOS5计算机正在使用的libz.a:将-Wl,-t标记添加到您的链接行并查看输出。然后找到libz.a所属的软件包,并将其安装在CentOS6计算机上。