日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

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

發布時間:2025/6/17 Ubuntu 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 静态库交叉编译 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。