使用Ubuntu编译ncnn库
使用Ubuntu编译ncnn库
1. 下载安装NDK
- 首先要下载和解压NDK。
wget https://dl.google.com/android/repository/android-ndk-r17b-linux-x86_64.zip
unzip android-ndk-r17b-linux-x86_64.zip
- 设置NDK环境变量,目录是NDK的解压目录。
export NDK_ROOT="/home/ying/usb/android-ndk-r17b"
- 设置好之后,可以使用以下的命令查看配置情况。
ying@ying:~/usb/ncnn$ echo $NDK_ROOT
/home/ying/usb/ncnn/android-ndk-r17b
2. 安装cmake
安装cmake,需要安装较高版本的,笔者的cmake版本是3.11.2。
- 下载cmake源码
wget https://cmake.org/files/v3.11/cmake-3.11.2.tar.gz
- 解压cmake源码
tar -zxvf cmake-3.11.2.tar.gz
- 进入到cmake源码根目录,并执行bootstrap。
cd cmake-3.11.2
./bootstrap
- 最后执行以下两条命令开始安装cmake。
make
make install
- 安装完成之后,可以使用cmake --version是否安装成功。
ying@ying:~/usb/ncnn/cmake-3.11.2$ cmake --version
cmake version 3.11.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
3. 下载编译ncnn
- 克隆ncnn源码。
git clone https://github.com/Tencent/ncnn.git
- 编译源码。
# 进入到ncnn源码根目录下
cd ncnn
# 创建一个新的文件夹
mkdir -p build-android-armv7
# 进入到该文件夹中
cd build-android-armv7
# 执行编译命令
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK_ROOT/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-14 ..
# 这里笔者使用4个行程并行编译
make -j4
make install
- 编译完成
会在build-android-armv7目录下生成一个install目录,我们编译得到的文件都在该文件夹下:- include 调用ncnn所需的头文件,该文件夹会存放在Android项目的src/main/cpp目录下;
- lib 编译得到的ncnn库libncnn.a,之后会存放在Android项目的src/main/jniLibs/armeabi-v7a/libncnn.a