交叉编译安卓动态/静态链接库

本文详细介绍了如何在Linux环境下利用NDK交叉编译安卓平台的动态库和静态库,并解决编译过程中遇到的问题。同时,文章还讲解了在Windows平台上借助CMake进行交叉编译的方法,包括创建原生子模块、配置CMakeLists.txt文件以及调用native方法的步骤。
摘要由CSDN通过智能技术生成

一,借助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
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值