2012-08-15 87 views
7

升級完成後,在Xcode 4.3的Xcode 4.4,我開始構建我的iPhone應用程序,以下錯誤:連接錯誤在Xcode 4.4

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中仍然可以編譯。

有沒有人有任何想法我可以追查是什麼導致這個錯誤?

+0

它可能是你沒有鏈接到你正在使用的框架,或者你鏈接到了錯誤的東西。如果是前者,請在構建設置中檢查並鏈接它。如果後者,刪除錯誤的鏈接器,並希望XCode將重新鏈接到正確的。 – aforaudrey 2012-08-15 18:32:32

+0

你的程序中是否有大的初始化全局或靜態數據? – 2012-08-15 18:55:19

+0

@MartinR是的,比我在一個典型的程序中看到的要大(我沒有寫太多的代碼),但是沒有大約70億甚至百萬分之一的數量。 – 2012-08-15 18:59:54

回答

1

你可以看到所有的符號(包括全局變量)的尺寸在鏈接映射文件

  • 在爲您的目標生成設置,進入「鏈接」部分,並設置「寫鏈接地圖文件「設置爲」是「。
  • 構建程序。鏈接器將失敗,但鏈接映射文件被寫入。
  • 找到鏈接映射文件。鏈接器的日誌輸出顯示參數-map -Xlinker -/path/to/linkmapfile.txt。它位於項目的DerivedData文件夾中。
  • 鏈接地圖文件顯示所有符號的地址(第一列)和大小(第二列)。對於全局變量,它顯示名稱和它們所在的目標文件。
  • 您應該在鏈接映射文件中找到錯誤消息的地址(在您的示例中爲0x0010C720)。
  • 您可以檢查鏈接地圖文件中是否有大尺寸的其他符號。

或許這有助於縮小問題範圍。

+1

不幸的是,在這種情況下,鏈接器不會創建該文件。 – 2012-08-17 17:00:54

+0

@ TheDirtyCalvinist:感謝您的反饋。不幸的是,我沒有更多的想法如何解決這個問題。 – 2012-08-17 17:07:59

2

我有同樣的錯誤。幸運的是,我可以回想起它出現的時刻,回滾並比較修訂。這是Google Analytics GAI類中的靜態方法。我不知道爲什麼會發生這種情況,因爲項目中的其他類別工作正常,但希望它也可以幫助別人。

+0

這是我的情況!謝謝 – 2013-06-27 14:50:48