0

アプリケーションに対してリンクされた.aファイルにコンパイルされたライブラリがあります。(iphone、Xcodeで開発)

すべてが正常で、リンクは成功しているようですが、プログラムを実行するとクラッシュします。クラッシュのポイントは、静的にリンクされたライブラリのmemcmp()呼び出しです。デバッガーは、名前に「dyld」が含まれるすべての種類のものを表示するため、何らかの理由でmemcmpを解決できず、ダイナミックライブラリの検索を開始してから失敗するようです。

AFAIK memcmpはlibcにあるため、問題にはなりません。(リンカーに-lcを渡そうとしましたが、期待どおりに機能しませんでした)

それで、それはどのように機能することになっていますか?静的にリンクされたライブラリがlibcの何かを使用できないのはなぜですか?どのようにコンパイルすればよいですか?

ありがとうございました

4

2 に答える 2

0

問題が何であったかを共有すると、おそらく誰かが役に立つと思うでしょう:

ライブラリは、メイン プログラムと同じ OS バージョン用にコンパイルされていないため、実行時に見つかったものとは異なる libc を予期していました。

于 2009-12-17T21:15:11.363 に答える
0

libc は明らかに、プラットフォーム上で動的にリンクされています。リンク時に生成された依存関係を満たすために、実行時に一致するバージョンを見つけることができません。

ファイルシステムの破損や動的リンクが発生する前に chroot を呼び出す以外に、これがどのように発生するかを説明することはできません (これはありそうもないことです)。

于 2009-11-14T05:33:41.370 に答える