64ビットrhel 6.4には32ビットアプリケーションがあります。バイナリでlddを実行すると、glibcの32ビットバージョンを使用していることが表示されます。 64ビットバージョンのglibcを指すようにできますか?では、どうすればよいですか?
-m32 フラグを使用してバイナリをコンパイルしました。
答え1
いいえ、できません。それらは異なるバイナリ形式を使用し、異なる呼び出し規則、異なる命令セット、異なるシステム呼び出し方法などすべてを使用します。
root@el6 ~ # file /lib/libc-2.12.so
/lib/libc-2.12.so: ELF 32-bit LSB shared object, Intel 80386, [...]
root@el6 ~ # file /lib64/libc-2.12.so
/lib64/libc-2.12.so: ELF 64-bit LSB shared object, x86-64, [...]
32ビットバイナリには32ビットライブラリが必要で、64ビットバイナリには64ビットライブラリが必要です。アプリケーションで64ビットlibcを使用するには、-m32なしで64ビットアプリケーションにコンパイルします。
答え2
いいえ、32ビットバージョンが64ビットバージョンと互換性がないため、できません。 64ビットバージョンは64ビット命令セットを使用し、アドレスも64ビット形式であるため、物理メモリ内のより多くのアドレス空間をサポートします。