問題はカーネルのバージョンではありません。
お使いのシステムのローダーは、新しい Linux
をサポートしていません アビ。比較的最近まで、Linux ELF バイナリは System V
を使用していました。 アビ。最近、STT_GNU_IFUNC をサポートするために、Linux
アビが追加されました。 システムを更新する必要があります C ライブラリに STT_GNU_IFUNC をサポートするローダーが含まれていると、Linux
を持つ ELF オブジェクトも認識されます。 ABI タイプ。
STT_GNU_IFUNC for Sparc に関する Dave Miller のブログ エントリ (アーカイブ) を参照して、STT_GNU_IFUNC の機能を理解してください。
新しいシステムのローダーを手に入れれば、それを使って動作させることができるかもしれません。しかし、あなたのプログラムがどこへ行ってもローダーを持ち運ばなければなりません。ここで説明したように、そのローダーを使用するようにプログラムをコンパイルするか、ここで述べたのと同様の方法で、プログラムをコンパイルしてから patchelf を使用してパッチを適用することができます。 OS ABI invalid
を返すプログラムを実行できました 他の場所から ld-2.15.so をコピーすることにより、ld-2.5.so を持っていた Linux 2.6.18 (あなたのものよりも古い) でのエラー。
注:しない システムの ld*.so または ld-linux を上書きします。;-/
glibc が --enable-multiarch
でビルドされている可能性があります ifunc と新しい LINUX ABI の使用を強制するフラグ