1

libfoo.a32ビットLinuxマシン用にコンパイルされたバイナリ静的ライブラリがあります。cygwinでコンパイルされたwin32プロジェクトに対してコンパイルしたいと思います。

それは可能ですか?ELFアーカイブ内のすべてのオブジェクトファイルは標準形式である必要があるため、可能と思われます。

nmただし、で見つかった関数に関するリンクエラーを受け取り続けていlibfoo.aます。libfoo.aの関数と同じ名前の空の関数をいくつか使用してスタブを作成したときlibfoo.a、それらの関数に関するリンクエラーを受信しなくなりました。

それも可能ですか、それとも私は何かを逃していますか?とにかく、どうすればこの問題をトラブルシューティングできますか?

4

1 に答える 1

0

リンクに成功したとしても、異なるプラットフォームで構築されたコードの非互換性を回避することはできません。たとえば、ヘッダー(glibcなど)はそこで異なります。互換性を確保するために、マングリングと同様の追加のメカニズムがオブジェクトファイルによってエクスポートされたシンボルで使用されているようです。

異なるプロセッサアーキテクチャ用にコンパイルされたオブジェクトファイルをリンクしようとしたときに、あなたと同様の問題が発生しました。nmは、必要なすべての関数が存在することを示しましたが、リンカーはそれを信じていませんでした。

于 2010-04-14T10:28:39.527 に答える