7

Xcode 4.3 から Xcode 4.4 にアップグレードすると、iPhone アプリのビルド時に次のエラーが発生し始めました。

ld: section __objc_const (address=0x0010C720, size=7265990088) would make the output executable exceed available address range for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

メモリのアドレスと番号は私には何の意味もありませんが、クリーンと再構築の間で一貫性を保っています。彼らが参照しているものを見つける方法は私には明らかではありません。

コードは、XCode 4.3 でコンパイルされました。

このエラーの原因を突き止める方法を知っている人はいますか?

4

2 に答える 2

2

まったく同じエラーが発生しました。幸いなことに、それが表示された瞬間を思い出し、ロールバックしてリビジョンを比較することができました。Google アナリティクスGAIクラスの静的メソッドを持つカテゴリでした。プロジェクトの他のカテゴリは問題なく機能するため、なぜそれが起こったのかわかりませんが、それが誰かにも役立つことを願っています.

于 2013-06-17T05:38:32.073 に答える
1

リンク マップ ファイル内のすべてのシンボル (グローバル変数を含む) のサイズを確認できます。

  • ターゲットのビルド設定で、「リンク」セクションに移動し、「リンク マップ ファイルの書き込み」を「はい」に設定します。
  • プログラムをビルドします。リンカーは失敗しますが、リンク マップ ファイルは書き込まれます。
  • リンク マップ ファイルを見つけます。リンカーからのログ出力には、パラメーターが表示されます-map -Xlinker -/path/to/linkmapfile.txt。これは、プロジェクトの DerivedData フォルダーのどこかにあります。
  • リンク マップ ファイルには、すべてのシンボルのアドレス (最初の列) とサイズ (2 番目の列) が表示されます。グローバル変数の場合、名前とそれらが配置されているオブジェクト ファイルが表示されます。
  • エラー メッセージのアドレス (この例では 0x0010C720) は、リンク マップ ファイルで見つける必要があります。
  • サイズの大きい他のシンボルについては、リンク マップ ファイルを確認できます。

したがって、おそらくこれは問題を絞り込むのに役立ちます。

于 2012-08-16T17:25:28.780 に答える