2012-05-04 40 views
1

我有一個在所有其他NEON編譯器,ndk-build,RVDS等編譯良好的代碼庫,但是在XCode下我得到錯誤「壞指令」 NEON指令我打電話。它基本上看起來像NEON沒有被檢測到。NEON程序集無法在XCode 4.3.2中編譯

我試圖建立一個靜態庫,我去新項目,選擇可可觸摸靜態庫,然後添加我現有的文件。

我讀的一切都表明NEON應該已經啓用了。我刪除了對armv6的所有引用,並針對iOS 5.1。

此外,所討論的代碼都包含在「.s」文件 - 純組件中定義的例程中。我沒有使用內在函數方法調用。

這似乎是編譯器對整個文件barfing ...

Unknown pseudo-op: .cpu 

它列出了所有的其他設置,如.fpu等

這裏是我的當前設置:

Basic Compiler http://yano.wasteonline.net/stackoverflow/xcode_neon/basic_compiler.png

LLVM Code Gen http://yano.wasteonline.net/stackoverflow/xcode_neon/llvm_code_gen.png

LLVM Language http://yano.wasteonline.net/stackoverflow/xcode_neon/llvm_language.png

+0

也許你的代碼被編譯爲拇指?嘗試添加「-mno-thumb」到「其他C標誌」。 –

+0

您確定您正在爲此設備構建此應用程序,而不是基於i386的模擬器? –

+0

我試過-mno-thumb,沒有區別。 – yano

回答

3

當我在最後一個答案中提到的as工具被證明對我的語法也感到窒息後,我意識到還有其他事情正在發生。

我跟着這個帖子上的底部http://www.shervinemami.info/armAssembly.html#template

我需要做出的變化是準則:

  1. 轉換我的指示,以全部小寫
  2. 使用的命名指令是兼容與mach-o(解決連接器問題)
1

嘗試使用GCC4.2。我解決了一個非常類似的問題,轉向舊的,良好的GCC。

在Build設置 - >編譯器C/C++/Objective-C中選擇GCC

其實,如果你檢查LLVM ARM狀態頁面,你會看到,它尚不能解析.S文件。

+0

切換到GCC並沒有改變任何東西,但你的提示關於LLVM不解析.S讓我走下正確的道路......下面的答案 – yano