web-dev-qa-db-ja.com

32ビットライブラリを64ビットプログラムにリンクする

32ビットの.soバイナリのみのライブラリがあり、それを使用する64ビットプログラムを生成する必要があります。 64ビットプログラムで使用できるように、ラップまたは変換する方法はありますか?

17
Krzysiek Goj

いいえ。64ビットプログラム内の32ビットコードに直接リンクすることはできません。

最良のオプションは、 64ビットプラットフォームで実行(ia32を使用) が可能な32ビット(スタンドアロン)プログラムをコンパイルし、プロセス間通信の形式を使用して64ビットプログラムから通信することです。

28
Reed Copsey

IPCを使用して64ビットコードから32ビットプラグインを実行する例については、オープンソース NSPluginWrapper を参照してください。

5
Zan Lynx

それは可能ですが、舞台裏でいくつかの深刻な魔法がなければ、あなたは答えを気に入らないでしょう。 32ビットCPUをエミュレートするか(冗談ではありません)、メインプロセスを32ビットに戻します。ただし、エミュレーションは遅い場合があります。

これは概念実証です テクニックの。

次に、32ビットライブラリとの間のeveryメモリアクセスのテーブルを保持し、それらの同期を維持します。理論的な完全性を得るのは非常に困難ですが、実行可能なものは非常に簡単ですが、非常に面倒です。

ほとんどの場合、私は2つのプロセスを信じており、他の方法で提案されているように、2つのプロセス間でIPCが実際に最も簡単な場合があります。

4
Prof. Falken