2011-03-15 75 views
17

直到xcode 4 final(我使用3.latest和4 GM的時間),這並沒有發生。當我升級到的Xcode 4的最終版本,我開始一個鏈接錯誤,而試圖將ARMv7的版本,我不ARMv7的鏈接庫(我的項目設置與默認標準的ARMv6 ARMv7的有效架構):Xcode 4 Final - 「armv6 armv7」問題與armv6庫鏈接時

ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7) 
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7) 
Undefined symbols for architecture armv7: -- list of symbols -- 

的armv6版本編譯得很好,但總體編譯過程失敗,出現77個鏈接錯誤。

我明白這是預期的行爲,它不會連接到armv7與armv6庫。解決方法是將我的項目設置爲armv6。我的問題在於:爲什麼在以前版本的xcode中工作?

如果我設置爲僅ARMv6的,我開始得到這樣的警告:

Check dependencies 

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6"). 

我不喜歡看到:-)遇到類似問題,有人警告?

感謝,

費爾南多

回答

22

我只是在項目 - >生成設置 - >體系結構選項卡中將生成活動體系結構設置爲是。

+3

我想說,只能防止這個錯誤發生在當前設備上。一旦你存檔提交你想要支持所有體系結構 – Jakob 2012-06-22 08:53:20

+0

THX - 修復了以下問題: 錯誤:架構armv7s的未定義符號: 「_OBJC_CLASS _ $ _ QREncoder」,引用自: 警告:ld:warning:忽略文件/用戶/ neo/Library/Developer/Xcode/DerivedData/WinNav-fycjhbccktevjdbrxudedbysqxmy/Build/Products/Debug-iphoneos/libqrencoder.a,該文件是爲存檔構建的,而不是被鏈接的體系結構(armv7s):/ Users/neo/Library /Developer/Xcode/DerivedData/WinNav-fycjhbccktevjdbrxudedbysqxmy/Build/Products/Debug-iphoneos/libqrencoder.a – 2012-09-29 12:26:02

0

雖然我還是不知道爲什麼會這樣開始只是在Xcode 4最終版發生了,我發現我的外部庫(SSL加密和)的對陣雙方編制的ARMv6和ARMv7在谷歌代碼項目非常日前:

http://code.google.com/p/ios-static-libraries/

如果定義了兩個不同的庫搜索路徑這將解決這個問題:一個用於ARMv6的,一個對ARMv7。

感謝,

7

在iOS版SDK 4.3,它看起來像連接器會直接拒絕在ARMv7的二進制使用ARMv6的庫 - 在此之前,情況並非如此。

這就是爲什麼我必須更新http://code.google.com/p/ios-static-libraries/項目才能生成armv6和armv7版本的庫。

3

我加入了第三方框架,一些示範類項目進入,但一旦實施它成功,我刪除那些演示類和自那時以來,錯誤開始上來 錯誤 「LD:........ ,文件是通用的,但不包含(N)爲架構的ARMv6"

的ARMv6片抓我的頭了整整一天後,第二天早晨發現了這個解決方案的同胞iphone哥們也許有用怎麼我知道痛

目標 - >「您的項目目標」 - >獲取信息 - >構建主動架構只設置爲YES

就是這樣..

1

有同樣的問題。 但我認爲原因不同。 我正在使用爲模擬器建立的library.a文件,並試圖在設備上運行它..後來知道我需要不同的.a文件模擬器和設備。我希望這可以幫助某人;)

+0

我會得到不同的.a文件的設備,我需要在設備上運行它的運行良好,但數據庫是空白不起作用罰款 – 2016-10-05 10:50:26

+0

你可以使用相同的代碼從你正在生成的模擬器文件,生成一個文件的偏差CE。您只需將目標更改爲設備。 – Zaraki 2016-10-05 11:14:45

+0

是的,我明白你的觀點 – 2016-10-05 11:17:17

相關問題