私のリンカーは
_/lib{32,64}/ld-2.20.so
_、シンボリックリンク付き
_/lib32/ld-linux.so.2
_および
_/lib64/ld-linux-x86-64.so.2
_(適切な_ld-2.20.so
_ sへ)
32ビットのバイナリを実行しようとすると、すべてうまくいきます。それらは正常にコンパイルされ(私はわずかに変更されたgcc specs
ファイルを使用しています)、一見正常にリンクし、正常に実行されます。
_ldd /path/to/example/32bit/binary
_を試してみると、_not a dynamic executable
_と言われます。私の理解では、これは実行可能ファイルを開くためのリンカーが見つからないためです。
_readelf -l example_binary | grep interpreter
_は、予想どおり_[Requesting program interpreter: /lib32/ld-linux.so.2]
_を提供します。
なぜこれが起こっているのか/どうすれば修正できますか?
P.s. -「Sudoaptgetを使用して32ビット互換ライブラリをインストールします...」apt/pacman/etceteraがないため、役に立ちません。特定の(32ビット)ライブラリを再インストールする必要がある場合は、それを知っておくと役に立ちます。
Pps-gcc
によって_/usr/lib{32,64}/libc.so
_にインストールされたスクリプトファイルは、適切な(実際の)_libc.so.6
_ファイルと_libc_nonshared.a
_ファイルをグループ化し、末尾にAS_NEEDED ( /lib32/ld-linux.so.2 ) )
を付けます。 lib32の終わり
これは非常に簡単です。
/usr/bin/ldd
は単なるスクリプトファイルです。
スクリプトファイルを開くと、上部に次の行が表示されます。これは、最初は(私のシステムでは)次のようになっています。
RTLDLIST="/lib/ld-linux.so.2 /lib64/ld-linux-x86-64.so.2 /libx32/ld-linux-x32.so.2"
。
この行をRTLDLIST="/lib32/ld-linux.so.2 /lib64/..."
に変更すると、すぐに問題が修正されました。
P.s. (他の誰かがgobject-introspectionのインストールに苦労している場合に備えて、ここに追加します)このソリューションは、ライブラリを解決するためにldd
を呼び出すため、gobject-introspectionをインストールしようとする場合にも役立ちます。
そこに表示されたエラーメッセージは次のとおりです:ERROR: can't resolve libraries to shared libraries: gobject-2.0, glib-2.0