错误:所选处理器不支持ARM模式

时间:2013-08-13 18:01:03

标签: android android-ndk

我正在尝试构建一个使用Android-ndk生成共享库的jni项目。 我将根据需要使用汇编语言编写部分代码,因此我将项目配置为以下内容。

Android.mk:
    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)
    LOCAL_MODULE    := my_test
    LOCAL_SRC_FILES := Test.cpp MyAsm.s
    LOCAL_CFLAGS := 
    include $(BUILD_SHARED_LIBRARY)

Application.mk:
    APP_ABI := armeabi-v7a
    APP_STL := stlport_static

Test.cpp:
    ...

    MyAsmFunc();

    ...
MyAsm.s:
    .text
    .align  2
    .global MyAsmFunc
    MyAsmFunc:
        ...
        tbb [PC,R1]
        ...
        cbnz R1,loc_51ACE
        ...

当我编译项目时,我收到以下错误信息。

MyAsm.s:224: Error: selected processor does not support ARM mode `tbb [PC,R1]'
MyAsm.s:882: Error: selected processor does not support ARM mode `cbnz R1,loc_51ACE'

我的问题是如何成功建立项目。请帮帮我。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

根据this page

These 16-bit Thumb instructions are available in ARMv6T2 and above.
There are no ARM or 32-bit Thumb versions of these instructions.

你正在编译ARMv7-A,所以第一部分没问题。但是,它试图将指令解释为ARM而不是THUMB / THUMB2。将.thumb / .thumb_func指令添加到程序集源文件以设置THUMB模式。另请参阅GNU as docs