【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# 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 <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# 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#總結
以上是生活随笔為你收集整理的【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android NDK 开发】Andr
- 下一篇: 【Android NDK 开发】Andr