环境: Ubuntu 18.04
一、准备工作 安装NDK Android SDK/Tools
wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip
直接解压到当前目录 android-ndk-r16b-linux-x86_64.zip
设置环境变量:
sudo vim /etc/profile
在文件结尾增加:
export NDK_ROOT=/home/VTK/android-ndk-r16b
export ANDROID_NDK=/home/VTK/android-ndk-r16b
export ANDROID_PLATFORM_TOOL=/home/VTK/platform-tools
export ANDROID_TOOL=/home/VTK/tools
export PATH PATH=$PATH:$NDK_ROOT:$ANDROID_TOOL:$ANDROID_PLATFORM_TOOL:$GOROOT/bin:$GOPAHT/bin
二、依赖工具 cmake make 相关库
cmake
1. 卸载已经安装的旧版的CMake[非必需]
apt-get autoremove cmake
2. 文件下载解压:
wget https://cmake.org/files/v3.12/cmake-3.12.2-Linux-x86_64.tar.gz
解压:
tar zxvf cmake-3.12.2-Linux-x86_64.tar.gz
3. 创建软链接
注: 文件路径是可以指定的, 一般选择在/opt 或 /usr 路径下, 这里选择/opt
mv cmake-3.12.2-Linux-x86_64 /opt/cmake-3.12.2
ln -sf /opt/cmake-3.12.2/bin/* /usr/bin/
然后执行命令检查一下:
>>>cmake --version
cmake version 3.12.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
make
sudo apt-get install make
其它 该命令将安装一堆新包,包括gcc,g ++和make。
sudo apt-get update
sudo apt-get install -y build-essential
OpenGL依赖库
sudo apt-get install freeglut3-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libxt-dev
三、下载VTK源码并编译
wget https://www.vtk.org/files/release/8.2/VTK-8.2.0.tar.gz
tar zxvf VTK-8.2.0.tar.gz
运行编译脚本
cd VTK-8.2.0
mkdir build
cd build
vim auto_build_android.sh
auto_build_android.sh 内容
#!/bin/bash
cmake -DCMAKE_TOOLCHAIN_FILE=$NDK_ROOT/build/cmake/android.toolchain.cmake \
-DCMAKE_ANDROID_NDK=$NDK_ROOT \
-DCMAKE_VERBOSE_MAKE=ON \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS='-std=c++11 -fpic -fexceptions -frtti' \
-DCMAKE_C_FLAGS='-fpic' \
-DCMAKE_ANDROID_STL_TYPE='c++_static' \
-DCMAKE_SYSTEM_VERSION=21 \
-DVTK_ANDROID_BUILD=ON \
-DANDROID_NATIVE_API_LEVEL=21 \
-DANDROID_PLATFORM=android-21 \
-DANDROID_EABI="aarch64-linux-android-4.9" \
-DANDROID_ARCH_ABI=arm64-v8a \
-DBUILD_SHARED_LIBS=ON \
-DOPENGL_ES_VERSION=3.0 ..
cmake --build .
保存,退出;
auto_build_clean.sh
#!/bin/bash
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
rm -rf CMakeExternals
rm -rf CMakeTmp
rm -rf CompileTools
rm -rf CTestCustom.cmake
rm -rf ExternalData
将 以下文件中 “std::round” 直接修改为 “round” ----------------这个比较麻烦,直接打开文件进行替换吧。
最近执行 auto_build_android.sh,编译出 64位.a 文件。
具体使用见:
https://www.michaelapp.com/posts/2019/VTK-Android%E7%A7%BB%E6%A4%8D%E5%92%8C%E7%A4%BA%E4%BE%8B/
https://github.com/panyingyun/vtkandroiddemo
这个比较老了,只编译出 32位,不能用了基本。
最后请注意,使用版本,如果是高版本的 NDK,会出很多问题,这里不在表述。