ndk 编译 armeabi 和 arm64的区别
时间: 2024-01-24 19:01:39 浏览: 37
NDK是Android Native Development Kit的缩写,用于在Android平台上开发C/C++语言的应用程序。针对不同的CPU架构,需要编译生成不同的so库文件,其中最常见的是armeabi和arm64。
armeabi是基于ARMv5TE架构的CPU,包括ARMv5、ARMv6和ARMv7等版本。而arm64是基于ARMv8-A架构的CPU。两者的区别主要在于CPU架构不同,因此需要使用不同的编译器和编译选项。
在NDK的编译中,需要使用不同的ABI(Application Binary Interface)进行编译。而不同的ABI对应不同的CPU架构,例如armeabi对应的是armeabi-v7a,arm64对应的是arm64-v8a。在Android.mk或CMakeLists.txt文件中,需要指定使用的ABI,例如:
- armeabi-v7a:
```
APP_ABI := armeabi-v7a
```
- arm64-v8a:
```
APP_ABI := arm64-v8a
```
同时,需要针对不同的ABI设置不同的编译选项,例如:
- armeabi-v7a:
```
LOCAL_CFLAGS := -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16
LOCAL_LDFLAGS := -march=armv7-a -Wl,--fix-cortex-a8
```
- arm64-v8a:
```
LOCAL_CFLAGS := -march=armv8-a
LOCAL_LDFLAGS := -march=armv8-a
```
总之,NDK编译armeabi和arm64的区别主要在于CPU架构不同,需要使用不同的编译器和编译选项。