Gcc CentOS 6产生奇数链接错误

Gcc CentOS 6产生奇数链接错误,gcc,centos,scons,centos6,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

我们的网络最近从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,另一台机器使用centOS 6。有人有什么建议吗

J

我想不出这个bug,也不知道从哪里开始

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

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

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


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

典型的问题是,对象文件用于错误的体系结构。尝试解包
/usr/lib/libz.a
,并使用
文件检查架构