現在、x86_64 でコンパイルしたプログラムがあります。これは、x86_64 でコンパイルされたかなりの数のライブラリに依存しています (したがって、それらすべてを再コンパイルすると大きなプロジェクトになります)。i386 dylib を実行しようとしていますが、dlopen を使用してロードするたびに、自分のアーキテクチャ用にビルドされていないというエラーが表示されます。i386 lib を直接 x86_64 に変換する方法はありますか (このソース コードはありません)、x86_64 アーキテクチャで実行する方法はありますか?
3 に答える
3
x86_64 実行可能ファイルに i386 ライブラリをロードすることはできません。
i386 ライブラリから x86_64 ライブラリを取得する唯一の方法は、適切なターゲット用に再コンパイルすることです。ソースコードがない場合、これは実行できません。
ただし、すべてのコードを i386 用に再コンパイルして、ライブラリを使用できます。
于 2011-08-27T06:30:33.930 に答える
2
32 ビット (i386) ライブラリ (dylib) を 64 ビット (x86_64) プロセスにロードすることはできません。
マシンは 32 ビットまたは 64 ビットのプロセスを実行できます。1 つのプロセスで 32 ビット コードと 64 ビット コードを混在させることはできません。
于 2011-08-27T06:30:28.577 に答える
2
そのライブラリがかけがえのないものであり、再コンパイルできず、プログラムの残りの部分を x86_64 にする必要がある場合は、別のプロセスで実行し、何らかの形式の IPC を使用してコードを呼び出して結果を渡すことができます。
ただし、多くの場合、ライブラリを書き直すか、同様の機能を持つ別のものに置き換える方が簡単な場合があります。
于 2011-08-27T08:16:26.830 に答える