文章目录

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



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



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

#include 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 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# 

更多相关文章

  1. Android(安卓)动态加载(五) - 借尸还魂之代理Activity模式
  2. Android内核源码交叉编译
  3. Android(安卓)源代码结构
  4. Android内核源码交叉编译
  5. Android编译过程详解
  6. android编译时添加库第三方库文件
  7. android编译时添加库第三方库文件
  8. 开机不锁屏
  9. Android(安卓)Studio builde.gradle 配置说明

随机推荐

  1. 在rails中基于javascripts on / off处理H
  2. 代码点火-如何从控制器返回Json响应
  3. 在Javascript中将下拉字段乘以文本字段
  4. 如何在HTML页面中维护SWF文件的大小?
  5. Angularjs - NgTable在重新加载时未定
  6. 从屏幕外动画div,没有绝对位置?
  7. JavaScript的前世今生
  8. 是否可以知道文件是否在用户的浏览器缓存
  9. 部署java后端和Javascript前端
  10. JavaScript 实现 GriwView 单列全选