NCNN
1、PC端ncnn动态链接库编译
apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-dev
wget https://sdk.lunarg.com/sdk/download/1.2.189.0/linux/vulkansdk-linux-x86_64-1.2.189.0.tar.gz?Human=true -O vulkansdk-linux-x86_64-1.2.189.0.tar.gz
tar -xf vulkansdk-linux-x86_64-1.2.189.0.tar.gz
export VULKAN_SDK=$(pwd)/1.2.189.0/x86_64
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
cmake -DCMAKE_BUILD_TYPE=Release -DNCNN_SHARED_LIB=ON -DNCNN_VULKAN=OFF -DNCNN_BUILD_EXAMPLES=ON ..
make -j16
make install
2、Android端ncnn动态链接库交叉编译
unzip android-ndk-r21d-linux-x86_64.zip
export ANDROID_NDK=<your-ndk-root-path>
cd <ncnn-root-dir>
mkdir -p build-android-armv7
cd build-android-armv7
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
-DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-14 ..
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
-DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-24 -DNCNN_VULKAN=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE=/mnt/toolschain/android-ndk-r23b/build/cmake/android.toolchain.cmake -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-29 -DNCNN_SHARED_LIB=OFF -DNCNN_VULKAN=ON ..
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/mnt/toolschain/android-ndk-r23b/build/cmake/android.toolchain.cmake -DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-29 -DNCNN_SHARED_LIB=ON -DNCNN_VULKAN=ON ..
make -j$(nproc)
make install
cd <ncnn-root-dir>
mkdir -p build-android-armv8
cd build-android-armv8
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
-DANDROID_ABI="arm64-v8a" -DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-14 ..
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
-DANDROID_ABI="arm64-v8a" -DANDROID_ARM_NEON=ON \
-DANDROID_PLATFORM=android-24 -DNCNN_VULKAN=ON ..
cmake -DCMAKE_TOOLCHAIN_FILE=/mnt/toolschain/android-ndk-r23b/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-29 -DNCNN_SHARED_LIB=OFF -DNCNN_VULKAN=ON ..
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=/mnt/toolschain/android-ndk-r23b/build/cmake/android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_ARM_NEON=ON -DANDROID_PLATFORM=android-29 -DNCNN_SHARED_LIB=ON -DNCNN_VULKAN=ON ..
make -j$(nproc)
make install
3、ubuntu交叉编译c++动态链接库给Android端使用
- 交叉编译底层sdk算法库
-
mkdir -p build
cd build
rm -rf *
cmake .. \
-DCMAKE_TOOLCHAIN_FILE=/mnt/toolschain/android-ndk-r23b/build/cmake/android.toolchain.cmake \
-DANDROID_ABI="arm64-v8a" \
-DANDROID_NDK=/mnt/toolschain/android-ndk-r23b \
-DANDROID_PLATFORM=android-29 \
-DANDROID_NATIVE_API_LEVEL=android-29
make -j16