在使用NDK编译过程中发现对于不同的CPU体系结构,部分支持编译调试,部分不支持调试,记录时不要忘记
Application.mk文件包含预定义的命令参数APP_ABI。 这是一个显示编译和调试的CPU体系结构。
目前,安卓系统支持7种CPU架构: ARMv5、ARMv7、2010和更高版本、x86、2011和更高版本、MIPS、2012和更高版本、ARMv8、MIPS64、x86_64和2014和更高版本
CPU体系结构
ABI
ARMv5
armeabi
第32名,从2010年开始
ARMv7
armeabi-v7a
第32名,从2010年开始
x86
x86
第32名,从2011年开始
MIPS
mips
第32名,从2012年开始
ARMv8
arm64-v8a
64位,从2014年开始
MIPS64
mips64
64位,从2014年开始
x86_64
x86_64
64位,从2014年开始
需要NDK_r10或更高版本的支持才能正确生成arm64-v8a、mips64和x86_64文件。 将APP_ABI的内容放置在Application.mk文件中。 例如,指示特定的CPU体系结构
1APP_ABI :=arm64-v8a
或者直接生成所有版本
1app_ABI:=全部
注:根据NDK的版本,APP_ABI :=all只能生成当前版本支持的ABI资料档案库文件。 如果需要生成最新版本,则需要更新相应的NDK版本。
明确说明或支持的CPU体系结构
1APP_ABI :=armeabi、armeabi-v7a、x86、mips、arm64-v8a、mips64和x86_64
推荐这个方法
注意:由于当前版本支持的问题,使用Eclipse NDK Windows集成方法开发的、对应的编译生成对应于CPU体系结构的so文件是没有问题的。 但是,调试并不总是可用的。启动NDK调试模式时,将显示一条消息,指示无法识别相应的ABI。
注意:
) 1、当前模拟器只有没有x86_64的arm64-v8a
) 2、在实机中测试armv8-a时,希望首先通过ADB外壳、cat /proc/cpuinfo确认实机是否支持armv8-a;
) 3、arm32和arm64的某些配置参数不能共存。 例如,-msoft-float仅在arm32位上受支持,而在arm64位上不受支持。
乱码三千点滴积累,欢迎访问乱码三千技术博客网站