一,借助Linux系统编译
1.借助Linux系统编译
1.1root用户下打开/etc/profile追加下方内容并保存
#NDK PATH
export NDK="/home/administrator/android/ndk/tool/android-ndk-r17c"
#GCC PATH
export NDK_GCC_X64="$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-gcc"
export NDK_GCC_arm="$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc"
export NDK_GCC_arm_64="$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-gcc"
#source file path
export NDK_CONF_X64="--sysroot=$NDK/platforms/android-21/arch-x86_64 -isystem $NDK/sysroot/usr/include -isystem $NDK/sysroot/usr/include/x86_64-linux-android"
export NDK_CONF_arm="--sysroot=$NDK/platforms/android-21/arch-arm -isystem $NDK/sysroot/usr/include -isystem $NDK/sysroot/usr/include/arm-linux-androideabi"
export NDK_CONF_arm_64="--sysroot=$NDK/platforms/android-21/arch-arm64 -isystem $NDK/sysroot/usr/include -isystem $NDK/sysroot/usr/include/aarch64-linux-android"
#静态库编译时用到额工具链
export NDK_AR_X64="$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64/bin/x86_64-linux-android-ar"
export NDK_AR_arm="$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar"
export NDK_AR_arm_64="$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar"
根据ndk所在位置不同,修改NDK变量的值即可,本例基于r17c版本做测试,其他版本无法保证成功
2.交叉编译安卓平台动态库/静态库
2.1.编写测试源代码
get.h文件
#include<stdio.h>
int get();
get.c文件
#include "get.h"
int get(){
return 666;
}
2.2.编译动态库
$NDK_GCC_arm -fPIC -shared $NDK_CONF_arm get.c -o libndkget.so
由于目标机器是arm平台的32位系统,所以使用$NDK_GCC_arm
3.编译静态库
3.1.获取目标文件
$NDK_GCC_arm -fPIC -c $NDK_CONF_arm get.c -o ndkget.o
3.2编译静态库
$NDK_AR_arm rcs