Compiling
GCC:設置架構以傳遞給連結器
GNU C 編譯器將錯誤的體系結構名稱傳遞給連結器。例如
gcc helloworld.i
拋出錯誤ld: unknown/unsupported architecture name: -arch arm
。在對 LD 進行了一些試驗之後,這似乎armv7
是我應該使用的架構。編譯和組裝操作似乎工作正常。似乎編譯器集合 (iphone-gcc) 旨在與通過開源 Darwin CC 工具提供的舊版本連結器一起使用,而不是我安裝的較新的 LD64 作為 CC 工具集合之外的獨立提供. 有沒有辦法告訴 GCC 將另一個架構傳遞給連結器?
-Wl,-arch,armv7
將or傳遞-Xlinker -arch -Xlinker armv7
給 GCC 會產生相同的錯誤。
您不應該零碎升級您的工具鏈。各部分必須協同工作。GNU 工具允許如此多的變化,因此必須將各個部分設置為一起工作,尤其是對於交叉編譯器。
如果您出於某種原因需要更新
ld
,您應該建立一個完整的工具鏈來支持它。
接受@Warren Young 的建議併升級工具鏈的其餘部分,而不是只升級連結器。
對於 ARM 上的 Darwin 9 及更高版本,推薦使用 CoolStar提供的工具鏈,該工具鏈可從 BigBoss 儲存庫中獲得。該工具鏈包含 LLVM+Clang 作為過時 iphone-gcc 的替代品,以及 LD64 和較新的 Darwin CC 工具。有關 iphone-gcc 和 LLVM+Clang 之間的更詳細比較,請參閱iphone-dev wiki(有些過時)。