android 如何实现交叉编译

有两种交叉编译的方式:

在网址下载android-ndk-r27c NDK版本,我们使用API34,为了编译ARM64位

复制代码
export NDK_PATH=/work/rkXXX//ndk/android-ndk-r27c
export TOOLCHAIN=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=aarch64-linux-android
export API=34  # 选择你要支持的最低 API 版本
export CC=$TOOLCHAIN/bin/${TARGET}${API}-clang
export CXX=$TOOLCHAIN/bin/${TARGET}${API}-clang++
export AR=$TOOLCHAIN/bin/llvm-ar
export AS=$TOOLCHAIN/bin/llvm-as
export LD=$TOOLCHAIN/bin/ld
export STRIP=$TOOLCHAIN/bin/llvm-strip
export SYSROOT=$TOOLCHAIN/sysroot
export PATH=$TOOLCHAIN/bin:$PATH

此时可以在命令行输入,查看有那些工具链。

如编译sqlite

复制代码
./configure CC=aarch64-linux-android34-clang --host=aarch64-linux-android --enable-shared --prefix=./install
cd  build
cmake -DCMAKE_SYSROOT=$SYSROOT -DCMAKE_LIBRARY_PATH=$LD_LIBRARY_PATH ..


make -j32
make install

第二种编译如tiff

直接使用DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake

复制代码
tiff

cmake -DCMAKE_INSTALL_PREFIX=./../install -Dtiff-docs=OFF  -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake ..
make
make install

有些依赖,需要在CMakelist.txt中增加

如下,报啥错,增加啥。

复制代码
set(SQLite3_INCLUDE_DIR "/sqlite/install/include")
set(SQLite3_LIBRARY "/sqlite/install/lib") 
set(EXE_SQLITE3 /sqlite/install/bin/sqlite3)


set(TIFF_INCLUDE_DIR "/libtiff/build/install/include")
set(TIFF_LIBRARY "/libtiff/build/install/lib") 



set(CURL_INCLUDE_DIR "/curl/install/include")
set(CURL_LIBRARY "/curl/install/lib")
相关推荐
星空寻流年4 小时前
设计模式第五章(门面模式)
android·设计模式
fionlsq5 小时前
uniapp集成原生安卓开发的插件
android·uni-app·小组件
风起云涌~8 小时前
【Android】kotlin.flow简介
android·开发语言·kotlin
深海呐8 小时前
Android 协程的基本使用和最简要原理概述
android·协程·android 协程·协程的原理
studyForMokey9 小时前
【Kotlin进阶】泛型的高级特性
android·开发语言·kotlin
袁震9 小时前
Android-kotlin MVVM框架搭建+Retrofit二次封装
android·kotlin·mvvm·retrofit
2501_9160074710 小时前
Java界面开发工具有哪些?常用Java GUI开发工具推荐、实战经验与对比分享
android·java·开发语言·ios·小程序·uni-app·iphone
铭哥的编程日记10 小时前
《Linux 基础 IO 完全指南:从文件描述符到缓冲区》
android·linux·运维
come1123412 小时前
Go 语言中的结构体
android·开发语言·golang