LAPACK Android端编译
使用集成Fortran交叉编译工具链的NDK
NDK默认没有集成Fortran交叉编译工具链,https://github.com/buffer51/android-gfortran/releases 这个链接里有修改版本的NDK交叉编译工具链,支持到NDK r13b和gcc4.9。
将对应版本的工具链下载下来后,解压到NDK对应工具链目录下,以arm64为例,将下载下来的工具链解压到android-ndk-r13b/toolchains/aarch64-linux-android-4.9/prebuilt下,将旧的工具链文件夹备份,将下载下来的工具链文件夹命名为linux-x86_64就可以使用了。
使用CMake交叉编译LAPACK
从 http://www.netlib.org/lapack 下载lapack。
CMake从3.7开始支持直接调用NDK编译Android库,具体命令可参考 https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-android-with-the-ndk
主要是要指定Fortran编译器为arch64-linux-android-gfortran,否则编译出来的库格式不对,链接不过
mkdir build
cd build
cmake .. -DCMAKE_SYSTEM_NAME=Android -DCMAKE_SYSTEM_VERSION=21 -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DCMAKE_ANDROID_NDK=/home/zhou/android-ndk-r13b -DCMAKE_ANDROID_STL_TYPE=c++_static -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=4.9 -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER=aarch64-linux-android-gfortran
make