2013-09-24 69 views
2

編譯Xcode項目失敗,以下錯誤: 'missing required architecture arm64 in file /Users/*/Git/ocr/opencv2.framework/opencv2'如何編譯OpenCV進行iOS7(arm64)

它運作良好,如果我改變架構(構建設置下)至(ARMv7的,armv7s),而不是(ARMv7的, armv7s)。

如何改變OpenCV的Python構建腳本,添加arm64支持opencv2.framework?

+2

您可能會更好,詢問這一點。在OpenCV的[StackOverflow clone](http://answers.opencv.org/questions/)上。通常情況下,OpenCV的文檔非常薄。 – marko

+0

我現在剛剛能夠構建標籤版本2.4.8,這是從2013年12月27日,沒有任何問題。 (儘管主人失敗了。)Xcode 5.0.2和OS X 10.9.1。 – febeling

回答

0

修改 「build_frameworks.py」 到:

def build_framework(srcroot, dstroot): 
    "main function to do all the work" 

    targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator"] 
    archs = ["armv7", "armv7s", "arm64", "i386"] 
    for i in range(len(targets)): 
     build_opencv(srcroot, os.path.join(dstroot, "build"), targets[i], archs[i]) 

    put_framework_together(srcroot, dstroot) 
+1

試圖改變腳本,因爲你建議但不能建立 –

2

micahp的回答幾乎是完美的,但錯過了模擬器版本。因此,修改平臺/ IOS/build_framework.py到:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"] 
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"] 

你需要下載一個命令行工具的Xcode 5.0.1,然後運行

python opencv/platforms/ios/build_framework.py ios 
+0

你可以上傳編譯的框架,並提供一個鏈接。我仍然收到錯誤 –

+0

這仍然無法建立。看來zlib無法爲64位目標構建。 iOS提供了zlib,所以我不知道OpenCV是否可以使用它。我花了太多時間嘗試修改版本以使其正常工作,但是我失敗了。 – Rick

4

我修改下,使它儘管我目前還沒有arm64 iOS設備進行測試。

編輯:我還必須遵循https://stackoverflow.com/a/17025423/1094400

假設 「的OpenCV」 是含有從GitHub OpenCV的源的文件夾:

在每個 gzlib.c, gzread.c, gzwrite.c位於 opencv/3rdparty/zlib/附加

#include <unistd.h> 

在頂部現有之後包括。

此外開放opencv/platforms/ios/cmake/Modules/Platform/iOS.cmake和變化線88從:

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)" CACHE string "Build architecture for iOS") 

到:

set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_INCLUDING_64_BIT)" CACHE string "Build architecture for iOS") 

此外改變buildscript在線路99 opencv/platforms/ios/build_framework.py和100從:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneSimulator"] 
archs = ["armv7", "armv7s", "i386"] 

於:

targets = ["iPhoneOS", "iPhoneOS", "iPhoneOS", "iPhoneSimulator", "iPhoneSimulator"] 
archs = ["armv7", "armv7s", "arm64", "i386", "x86_64"] 

得到的文庫將包括以下:

$ xcrun -sdk iphoneos lipo -info opencv2 
    Architectures in the fat file: opencv2 are: armv7 armv7s i386 x86_64 arm64 

雖然我有關於opencv/platforms/ios/cmake/Toolchain-iPhoneOS_Xcode.cmake其限定了數據指針的大小的剩餘關注是在線14 4和17 它應該是8 64位我想,這樣如果編譯庫工作arm64我沒有測試過我會在這一點上提出進一步的調查,如果它不能正常運行。

+0

給所有最終用戶提供一個快速註釋:OpenCV現在默認支持arm64,所以下載最新的OpenCV iOS框架即可。 – golmschenk

0

@Jan,我按照您的指示,但OpenCV的還是不上arm64運行。你做出了這樣一個詳細而精彩的答案 - 爲什麼不在模擬器上檢查一下,看看你能不能讓它運行? :-)

FWIW,我認爲這可能比看起來更難。在openCV的stackoverflow克隆上,有一個跡象表明這個問題可能是non-trivial

0

而不是使用官方網站的opencv安裝指南中給出的終端命令,使用以下命令。爲我工作。

CD的OpenCV-2.3.1

的mkdir建立

CD打造

的cmake -G 「的Unix Makefile文件」 ..

使

須藤使安裝

0

我有一個類似的錯誤,但coompilation.fixed加入框架的libC++的問題沒有與arm64相關dylib