2011-08-14 97 views
2

編譯到設備時出現以下編譯錯誤。 (當編譯到模擬器一切都OK了)分支超出範圍編譯錯誤

/var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++TI/-Tmp-/cc-hojnUD.s:1784380:branch 超出範圍 /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU++TI/-Tmp-/cc-hojnUD.s:1784372:branch 超出範圍 /var/folders/3B/3BAjD + ANHHmfh-eIWrtXDU +++ TI/-Tmp-/cc-hojnUD.s:1784364:分支 超出範圍 /var/folders/3B/3BAjD+ANHHmfh-eIWrtXDU+++/-/-Tmp-/cc-hojnUD.s:1784356:branch 超出範圍

In vario我讀了一些關於關閉「拇指」的地方。我不知道這是否能解決這個問題,因爲我無法在任何地方找到這個編譯選項。

我有一些非常大的初始化文件(超過50K行)除了定義NSMutuable數組和類似的Stuf外別無其他。

因爲這個錯誤,我無法再讓我的應用程序爲iPhone編譯了。

你知道我能做些什麼嗎?

ps。我使用Xcode 4.2和Apple LLVM 3.0(使用ARM,所以我無法更改編譯器)

非常感謝!

+0

你的init文件是一個巨大的函數嗎?如果是這樣,它可能有助於將功能分解成更小的部分,並有一個主功能按順序調用這些部分。 –

+0

謝謝,這絕對有幫助。現在我可以編譯到iPhone。然而,運行儀器與構建配置文件仍然掛起 - 我爲此向蘋果提交了一個錯誤報告。如果你可以把你的評論作爲一個評論,我會很高興地標記它 – user387184

回答

0

(已從評論中移除)。你的init文件是一個巨大的功能嗎?如果是這樣,它可能有助於將功能分解成更小的部分,並有一個主功能按順序調用這些部分。

0

這是一個已知的鏈接器錯誤(rdar:// 16186742)。問題在於armv7編譯器,當它需要合成分支島跳躍超過16 MB時,跳躍碰巧是,正好是 16 MB。解決方法是重新安排項目構建階段中的源文件和/或Link Binary with Libraries部分中的庫。重新安排一些這個問題應該消失。