700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )

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

时间:2021-05-12 00:45:38

相关推荐

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

文章目录

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

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

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

#include <stdio.h>int add(int a, int b){return a + b;}

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

3 . 编译命令 :

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

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

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

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.so

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

root@octopus:~/NDK/001_Compile# lsadd.croot@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-gccroot@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.soroot@octopus:~/NDK/001_Compile# root@octopus:~/NDK/001_Compile# lsadd.c libadd.soroot@octopus:~/NDK/001_Compile#

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

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

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

#include <stdio.h>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静态库 ;

root@octopus:~/NDK/001_Compile# lsadd.c libadd.soroot@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-gccroot@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-arroot@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.oroot@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.aroot@octopus:~/NDK/001_Compile# root@octopus:~/NDK/001_Compile# lsadd.c add.o libadd.a libadd.soroot@octopus:~/NDK/001_Compile# root@octopus:~/NDK/001_Compile#

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。