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 を使用していることです。誰か提案はありますか?

J

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 に答える