LDが「利用可能なバージョン情報なし」を出力し続けるのはなぜですか?

LDが「利用可能なバージョン情報なし」を出力し続けるのはなぜですか?

ライブラリをロードするたびにエラーが発生します。

利用可能なバージョン情報はありません。

ライブラリは、実行中のPC(mandriva 2010.2)以外のPC(ubuntu 10.04)でコンパイルされました。

$ ldd /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so
/usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so: /lib/libz.so.1: no version information available (required by /usr/local/gnu-eabi-4.5.2/i686-pc-linux-gnu/arm-eabi/lib/libbfd-2.21.so)
 linux-gate.so.1 =>  (0xffffe000)
 libz.so.1 => /lib/libz.so.1 (0xb77a7000)
 libc.so.6 => /lib/i686/libc.so.6 (0xb7655000)
 /lib/ld-linux.so.2 (0xb787a000)

編集:回避策は機能しません。

ベストアンサー1

いいえ、そうではありません。これは、プログラムのコンパイル時にリンクされたlibzバージョンが、使用しているmadrivaシステムのバージョンとは異なるツールで構築されたことを意味するようです。 Mandrivaのコピーには、プログラムが元々リンクされているlibzライブラリのコピーにあるシンボルバージョン情報がありません。これは、libz ライブラリ自体のバージョンではなく、各ビルド環境の違いに関連しています。

バイナリと同じツールセット(ライブラリにシンボルバージョンを挿入するツールなど)でビルドされたlibzのコピーを提供するまで、このメッセージは引き続き表示されると思います。または、Mandrivaシステムでlibzをコンパイルするときに使用されるものと同様のツールを使用してバイナリをビルドし、バイナリにシンボリックバージョン参照がないようにします。

望むより: http://harmful.cat-v.org/software/dynamic-linking/versioned-symbols http://www.linux-kongress.org/1997/youngdale.html http://www.usenix.org/publications/library/proceedings/als00/2000papers/papers/full_papers/browndavid/browndavid_html/

不要なシンボルバージョン参照を削除し、他のすべてのバージョン参照(存在する場合)を維持するために、他のシステムでコンパイルされたバイナリを変更できるツールはありません。

おすすめ記事