有两种交叉编译的方式:
在网址下载android-ndk-r27c NDK版本,我们使用API34,为了编译ARM64位
export NDK_PATH=/work/rkXXX//ndk/android-ndk-r27c
export TOOLCHAIN=$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=aarch64-linux-android
export API=34 # 选择你要支持的最低 API 版本
export CC=$TOOLCHAIN/bin/${TARGET}${API}-clang
export CXX=$TOOLCHAIN/bin/${TARGET}${API}-clang++
export AR=$TOOLCHAIN/bin/llvm-ar
export AS=$TOOLCHAIN/bin/llvm-as
export LD=$TOOLCHAIN/bin/ld
export STRIP=$TOOLCHAIN/bin/llvm-strip
export SYSROOT=$TOOLCHAIN/sysroot
export PATH=$TOOLCHAIN/bin:$PATH
此时可以在命令行输入,查看有那些工具链。
如编译sqlite
./configure CC=aarch64-linux-android34-clang --host=aarch64-linux-android --enable-shared --prefix=./install
cd build
cmake -DCMAKE_SYSROOT=$SYSROOT -DCMAKE_LIBRARY_PATH=$LD_LIBRARY_PATH ..
make -j32
make install
第二种编译如tiff
直接使用DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake
tiff
cmake -DCMAKE_INSTALL_PREFIX=./../install -Dtiff-docs=OFF -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake ..
make
make install
有些依赖,需要在CMakelist.txt中增加
如下,报啥错,增加啥。
set(SQLite3_INCLUDE_DIR "/sqlite/install/include")
set(SQLite3_LIBRARY "/sqlite/install/lib")
set(EXE_SQLITE3 /sqlite/install/bin/sqlite3)
set(TIFF_INCLUDE_DIR "/libtiff/build/install/include")
set(TIFF_LIBRARY "/libtiff/build/install/lib")
set(CURL_INCLUDE_DIR "/curl/install/include")
set(CURL_LIBRARY "/curl/install/lib")