赞
踩
android_r23_arm-env文件内容如下:
#!/bin/bash # export for ndk r23c API_LEVEL="21" export ANDROID_HOST=aarch64-linux-android export ANDROID_BUILD=linux-x86_64 export ANDROID_ARCH=arm64 export ANDROID_NDK=/opt/ndk/android-ndk-r23c export ANDROID_TOOLCHAIN_VERSION=4.9 export RANLIB=$ANDROID_HOST-ranlib export TOOLCHAIN="$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64" export SYSROOT=$TOOLCHAIN/sysroot export CC="$ANDROID_HOST$API_LEVEL-clang " export CXX="$ANDROID_HOST$API_LEVEL-clang++ " export LD="$TOOLCHAIN/bin/ld " export AR="$TOOLCHAIN/bin/llvm-ar" export AS="$TOOLCHAIN/$ANDROID_HOST/bin/as" export RANLIB="$TOOLCHAIN/bin/llvm-ranlib" export STRIP="$TOOLCHAIN/bin/llvm-strip" export CPPFLAGS="--sysroot=$SYSROOT" export ARCH_FLAGS="-mthumb" export CFLAGS="${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector-all -fno-strict-aliasing" export CXXFLAGS="${CFLAGS} -frtti -fexceptions" export PATH="$TOOLCHAIN/bin:$PATH"
android_r21_arm-env文件内容如下(如果用的是21版本的ndk可以用这个,下面脚本source部分自行修改就行):
#!/bin/bash
export TOOLCHAIN=/opt/ndk/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/
export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
export TOOL=aarch64-linux-android
export LD=$TOOLCHAIN/bin/${TOOL}-ld
export AR=$TOOLCHAIN/bin/${TOOL}-ar
export RANLIB=$TOOLCHAIN/bin/${TOOL}-ranlib
export STRIP=$TOOLCHAIN/bin/${TOOL}-strip
export PATH=$TOOLCHAIN/bin:$PATH
export SYSROOT=$TOOLCHAIN/sysroot
export ARCH_FLAGS="-mthumb"
export CFLAGS="${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector-all -fno-strict-aliasing"
export CXXFLAGS="${CFLAGS} -frtti -fexceptions"
编译脚本 build.sh(大部分可以直接使用)
#!/bin/bash #根据实际目录修改 source "/opt/ndk/android_r23_arm-env" # current dir CURRENT_PATH=$(pwd) #预留 TARGET=aarch64-linux-android #按照需要的ABI进行修改 #TARGET_ABI=armeabi-v7a TARGET_ABI=arm64-v8a PREFIX=$CURRENT_PATH/build/$TARGET_ABI if [ -d $PREFIX ];then rm -rf $PREFIX mkdir -p $PREFIX else mkdir -p $PREFIX fi echo "---------------------------" echo " > start to build ARM64." echo "---------------------------" cd $CURRENT_PATH/build/ cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DCMAKE_INSTALL_PREFIX=$PREFIX \ -DANDROID_ABI=$TARGET_ABI \ -DANDROID_PLATFORM=android-21 \ -DCMAKE_BUILD_TYPE=release\ -DANDROID_TOOLCHAIN=clang++ \ .. make -j 8 make install echo "---------------------------" echo " > build finished." echo "---------------------------" cd $CURRENT_PATH
2.1 编译 protobuf_3_17
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=$PREFIX \
-DANDROID_ABI=$TARGET_ABI \
-DANDROID_PLATFORM=android-21 \
-DCMAKE_BUILD_TYPE=Release\
-DANDROID_TOOLCHAIN=clang++ \
../cmake/
2.2 编译 spdlog
2.3 编译SQLite
#!/bin/bash
source "/opt/ndk/android_r23_arm-env"
./configure --prefix=`pwd`/build/\
--with-sysroot=$TOOLCHAIN/sysroot \
--host=aarch64-linux-android
if [ $? -eq 0 ]; then
make -j8 && make install
fi
echo "---------------------------"
echo " > build finished."
echo "---------------------------"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。