我们的网络最近从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。有没有人有任何建议?
Ĵ
答案 0 :(得分:2)
我无法弄清楚这个错误,我不知道从哪里开始。
问题是您正在构建64位程序,链接器正在查找32位libz.a,反之亦然。
在CentOS5计算机上,链接器会跳过此不兼容的libz.a
,并在其他地方找到另一个libz.a
。
在你的CentOS6机器上,其他地方不存在,所以你得到一个错误。
您可以找到CentOS5计算机正在使用的libz.a
:将-Wl,-t
标记添加到您的链接行并查看输出。然后找到libz.a
所属的软件包,并将其安装在CentOS6计算机上。