Windows交叉编译MNN-3.0.0安卓版本库(通过WSL2)
一、写在前面
昨天写了在WIN10上面通过Andriod Studio来编译MNN的demo,通过解压.apk文件来得到libMNN.so文件。今天在记录一下使用WSL2来编译MNN-Andriod。
二、WSL2的安装
由于不是本篇的主题,故不在这里进行展开,后续会补充步骤链接。
三、WSL2编译环境配置
1、NDK-Linux安装
上篇在WIN10当中使用Andriod Studio的SDK Manager编译的SDK不适用于Linux,并且WSL2对WIN10的文件访问也存在一些权限问题,故在这里,我们重新在WSL2当中安装NDK。流程如下:
# 创建目录 mkdir -p ~/android-sdk/ndk # 下载NDK(可以从Android官网下载Linux版本的NDK) cd ~/android-sdk/ndk wget https://dl.google.com/android/repository/android-ndk-r25c-linux.zip unzip android-ndk-r25c-linux.zip # 设置环境变量 echo 'export ANDROID_NDK=~/android-sdk/ndk/android-ndk-r25c' >> ~/.bashrc source ~/.bashrc
下载的时候需要注意自己的网络环境,最好科学一下。
之后进行验证NKD工具链:
# 检查编译器是否存在 ls -l $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang ls -l $ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++
2、Cmake版本适配
MNN文档对于编译安装版本MNN是的cmake版本是有要求的:
我们这里重新安装一下Cmake来适配编译要求。
# 删除旧版本 sudo apt remove cmake # 添加Kitware的APT仓库 wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" # 安装新版本CMake sudo apt update sudo apt install cmake
四、在WSL2当中编译MNN(动态库)
执行如下指令:
cd /mnt/d/DeskTop/MNN/project/android mkdir -p build_64 && cd build_64 ../build_64.sh
一般来说就没啥问题了,不过需要注意的是,sh脚本当中编译宏编译的文件是动态链接,OUT文件需要搭配so文件才能正常执行。
把out文件和so文件推送到安卓设备的/data/local/tmp路径下面,然后设置LD_LIBBARY_PATH来指定库的搜索路径
# 进入adb shell adb shell # 进入目标目录 cd /data/local/tmp # 设置库搜索路径为当前目录 export LD_LIBRARY_PATH=/data/local/tmp:$LD_LIBRARY_PATH
不过上述的“export LD_LIBRARY_PATH=/data/local/tmp:$LD_LIBRARY_PATH”指令是一次性的,只在当前的shell才有效。
每次进入都需要执行一次。
五、在WSL2当中编译MNN(静态库)
如果想要静态链接的OUY文件(不依赖so文件),则需要修改CMake配置,添加:
-DMNN_BUILD_SHARED_LIBS=OFF
enjoy yourself~~~
本文作者:笑眯眯办大事
本文链接:https://www.cnblogs.com/Vsonic12138/p/18632691
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步