ndk linux编译静态库,【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )...

I . Ubuntu 中交叉编译 Android 动态库

1 . 要编译的源文件 : add.c 源文件 ;java

#include

int add(int a, int b){

return a + b;

}

2 . 共享动态库编译参数 : 编译动态库须要添加 “-fPIC” 和 “-shared” 两个参数 ;linux

3 . 编译命令 :android

① 设置 编译器 临时环境变量 :web

export CC=/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gccide

② 设置指定 头文件和函数库 的临时环境变量 :svg

export HEAD_LIB="--sysroot=/root/NDK/android-ndk-r17c/platforms/android-21/arch-arm -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"函数

③ 最终命令 :工具

$CC $HEAD_LIB -fPIC -shared add.c -o libadd.soui

4 . 编译结果 : 在该目录下生成了 libadd.so 动态库 ;idea

8d3b1caab3908d85fb0ebe476b00be70.png

root@octopus:~/NDK/001_Compile# ls

add.c

root@octopus:~/NDK/001_Compile# export CC=/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# export HEAD_LIB="--sysroot=/root/NDK/android-ndk-r17c/platforms/android-21/arch-arm -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# $CC $HEAD_LIB -fPIC -shared add.c -o libadd.so

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# ls

add.c libadd.so

root@octopus:~/NDK/001_Compile#

目录中的 libadd.so 就是编译完成的动态库 , 该动态库能够放到 Android Studio 项目中使用 ;

II . Ubuntu 中交叉编译 Android 静态库

1 . 要编译的源文件 : add.c 源文件 ;

#include

int add(int a, int b){

return a + b;

}

2 . 共享动态库编译参数 : 编译动态库须要添加 “-fPIC” 参数 , 先输出 .o 文件 , 而后 根据 .o 文化生成 静态库 ;

3 . 编译命令 :

① 设置 arm-linux-androideabi-gcc 交叉编译器 临时环境变量 : 用于生成 .o 文件 ;

export CC=/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc

② 设置 arm-linux-androideabi-ar 工具 临时环境变量 : 使用 .o 文件生成静态库 ;

export AR=/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar

② 设置指定 头文件和函数库 的临时环境变量 :

export HEAD_LIB="--sysroot=/root/NDK/android-ndk-r17c/platforms/android-21/arch-arm -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"

③ 最终命令 :

$CC $HEAD_LIB -fPIC -c add.c -o add.o

$AR r libadd.a add.o

4 . 编译结果 : 在该目录下生成了 libadd.a 静态库 ;

5bb4156cc23b1509dd9393bbf64b4301.png

root@octopus:~/NDK/001_Compile# ls

add.c libadd.so

root@octopus:~/NDK/001_Compile# export CC=/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# export AR=/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# export HEAD_LIB="--sysroot=/root/NDK/android-ndk-r17c/platforms/android-21/arch-arm -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include -isystem /root/NDK/android-ndk-r17c/sysroot/usr/include/arm-linux-androideabi"

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# $CC $HEAD_LIB -fPIC -c add.c -o add.o

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# $AR r libadd.a add.o

/root/NDK/android-ndk-r17c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar: creating libadd.a

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile# ls

add.c add.o libadd.a libadd.so

root@octopus:~/NDK/001_Compile#

root@octopus:~/NDK/001_Compile#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值