ndk交叉编译python

arm64体系

ndk r13

#!/bin/bash
COMPILE_ROOT=`pwd`
ANDROID_NDK_ROOT=/home/xx/ndk/android-ndk-r13b
ANDROID_GCC_ROOT=${ANDROID_NDK_ROOT}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64
ANDROID_GCC_PATH=${ANDROID_GCC_ROOT}/bin

BUILD_PATH=${COMPILE_ROOT}/build
OUT_PATH=${COMPILE_ROOT}/out

SYSROOT=${ANDROID_NDK_ROOT}/platforms/android-21/arch-arm64

OPENSSL_PATH=${COMPILE_ROOT}/thirdparty/libressl-3.1.0/out
OPENSSL_LIB_PATH=${COMPILE_ROOT}/thirdparty/libressl-3.1.0/out/lib

CROSS_COMPILER=aarch64-linux-android-
CROSS_COMPILER_CLANG=aarch64-linux-android28-

#prepare
mkdir -p ${BUILD_PATH}
mkdir -p ${OUT_PATH}
export PATH=${ANDROID_NDK_ROOT}:${ANDROID_GCC_PATH}:$PATH

export ARCH="aarch64"
export CC="${ANDROID_GCC_PATH}/${CROSS_COMPILER}gcc -pie -fPIE" 
export CPP="${ANDROID_GCC_PATH}/${CROSS_COMPILER}cpp -E  -pie -fPIE"
export CXX="${ANDROID_GCC_PATH}/${CROSS_COMPILER}g++  -pie -fPIE"

export AS="${ANDROID_GCC_PATH}/${CROSS_COMPILER}as"
export LD="${ANDROID_GCC_PATH}/${CROSS_COMPILER}ld -pie -fPIE"
export GDB="${ANDROID_GCC_PATH}/${CROSS_COMPILER}gdb"
export STRIP="${ANDROID_GCC_PATH}/${CROSS_COMPILER}strip"
export RANLIB="${ANDROID_GCC_PATH}/${CROSS_COMPILER}ranlib"
export OBJCOPY="${ANDROID_GCC_PATH}/${CROSS_COMPILER}objcopy"
export OBJDUMP="${ANDROID_GCC_PATH}/${CROSS_COMPILER}objdump"
export AR="${ANDROID_GCC_PATH}/${CROSS_COMPILER}ar"
export NM="${ANDROID_GCC_PATH}/${CROSS_COMPILER}nm"
export READELF="${ANDROID_GCC_PATH}/${CROSS_COMPILER}readelf"
export M4=m4
export TARGET_PREFIX=$CROSS_COMPILER
export CONFIG_SITE="config.site"
export CXXFLAGS="-D__ANDROID_API__=21 "

echo $PATH

cd ${BUILD_PATH}

ln -snf ${SYSROOT}/usr/lib/crtbegin_so.o ./
ln -snf ${SYSROOT}/usr/lib/crtend_so.o ./
ln -snf ${SYSROOT}/usr/lib/crtbegin_dynamic.o ./
ln -snf ${SYSROOT}/usr/lib/crtend_android.o ./
ln -snf ${SYSROOT}/usr/lib/crtbegin_static.o ./

echo -e "ac_cv_file__dev_ptmx=yes\nac_cv_file__dev_ptc=no" > config.site

../configure --host=aarch64-linux-android  \
--build=x86_64-pc-linux-gnu \
--target=aarch64-linux-android \
LDFLAGS="-Wl,--allow-shlib-undefined -D__ANDROID_API__=21  -fPIC  -L${SYSROOT}/usr/lib -L${OPENSSL_LIB_PATH}" \
CFLAGS="-I${SYSROOT}/usr/include -I${SYSROOT}/usr/lib  --sysroot=${SYSROOT} -march=armv8-a -DHAVE_MKNOD -DHAVE_MAKEDEV -DHAVE_GMTIME_R -DHAVE_LOCALTIME_R -DHAVE_TIMEGM" \
CPPFLAGS=" -I${SYSROOT}/usr/include -I${SYSROOT}/usr/lib --sysroot=${SYSROOT}" \
--enable-shared \
--disable-ipv6 \
--with-ensurepip=no \
--with-openssl=${OPENSSL_PATH} \
--prefix=${OUT_PATH}

make -j8 2>&1 |tee build.log
echo "-----------build success!-------------"

make install
echo "-----------install success!-------------"

nkd r21

#!/bin/bash
COMPILE_ROOT=`pwd`
ANDROID_NDK_ROOT=/home/xx/ndk/android-ndk-r21
ANDROID_GCC_ROOT=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64
ANDROID_GCC_PATH=${ANDROID_GCC_ROOT}/bin

BUILD_PATH=${COMPILE_ROOT}/build
OUT_PATH=${COMPILE_ROOT}/out

OPENSSL_PATH=${COMPILE_ROOT}/thirdparty/libressl-3.1.0/out
OPENSSL_LIB_PATH=${COMPILE_ROOT}/thirdparty/libressl-3.1.0/out/lib

CROSS_COMPILER=aarch64-linux-android-
CROSS_COMPILER_CLANG=aarch64-linux-android28-

#prepare
mkdir -p ${BUILD_PATH}
mkdir -p ${OUT_PATH}
export PATH=${ANDROID_NDK_ROOT}:${ANDROID_GCC_PATH}:$PATH

export ARCH="aarch64"
export CC="${CROSS_COMPILER_CLANG}clang -pie -fPIE" 
export CPP="${CROSS_COMPILER_CLANG}clang -E  -pie -fPIE"
export CXX="${CROSS_COMPILER_CLANG}clang++  -pie -fPIE"

export AS="${CROSS_COMPILER}as"
export LD="${CROSS_COMPILER}ld  -pie -fPIE"
export GDB="${CROSS_COMPILER}gdb"
export STRIP="${CROSS_COMPILER}strip"
export RANLIB="${CROSS_COMPILER}ranlib"
export OBJCOPY="${CROSS_COMPILER}objcopy"
export OBJDUMP="${CROSS_COMPILER}objdump"
export AR="${CROSS_COMPILER}ar"
export NM="${CROSS_COMPILER}nm"
export READELF="${CROSS_COMPILER}readelf"
export M4=m4
export TARGET_PREFIX=$CROSS_COMPILER
export CONFIG_SITE="config.site"
export CXXFLAGS="-D__ANDROID_API__=28 "

cd ${BUILD_PATH}

echo -e "ac_cv_file__dev_ptmx=yes\nac_cv_file__dev_ptc=no" > config.site

../configure --host=aarch64-linux-android  \
--host=aarch64-linux \
--build=x86_64-pc-linux-gnu \
--target=aarch64-linux-android \
LDFLAGS="-Wl,--allow-shlib-undefined -D__ANDROID_API__=28 -fPIC -L${OPENSSL_LIB_PATH}" \
CFLAGS="-D__ANDROID_API__=28  " \
CPPFLAGS="-D__ANDROID_API__=28" \
--enable-shared \
--enable-ipv6 \
-with-ensurepip=no \
--with-openssl=${OPENSSL_PATH} \
--prefix=${OUT_PATH}

make -j8 2>&1 |tee build.log
echo "-----------build success!-------------"

make install
echo "-----------install success!-------------"
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
NDK交叉编译Boost是将Boost库编译成适用于Android平台的库文件,以便在Android应用中使用Boost库的功能。下面是一般的NDK交叉编译Boost的步骤: 1. 下载NDK:首先,你需要下载并安装Android NDK,可以从官方网站(https://developer.android.com/ndk/downloads)上获取最新版本的NDK。 2. 下载Boost库:接下来,你需要下载Boost库的源代码。你可以从Boost官方网站(https://www.boost.org/users/download/)上下载最新版本的Boost库。 3. 配置Boost库:解压下载的Boost源代码,并进入解压后的目录。在终端中执行以下命令来配置Boost库: ``` ./bootstrap.sh --with-libraries=<library_names> --with-toolset=<toolset_name> --prefix=<install_path> ``` 其中,`<library_names>`是你需要编译的Boost库的名称,可以根据你的需求进行选择;`<toolset_name>`是你要使用的编译工具链,例如`clang`或`gcc`;`<install_path>`是你希望安装Boost库的路径。 4. 编辑user-config.jam文件:在Boost源代码目录下,创建一个名为`user-config.jam`的文件,并添加以下内容: ``` using clang : <ndk_version> : <path_to_ndk>/toolchains/llvm/prebuilt/<host_os>/bin/clang++ ; ``` 其中,`<ndk_version>`是你下载的NDK的版本号,`<path_to_ndk>`是你安装NDK的路径,`<host_os>`是你的操作系统类型(例如`darwin-x86_64`或`linux-x86_64`)。 5. 开始编译Boost库:在终端中执行以下命令来开始编译Boost库: ``` ./b2 toolset=clang-<ndk_version> target-os=android link=static threading=multi variant=release install ``` 这将使用指定的编译工具链和选项来编译Boost库,并将编译结果安装到之前配置的安装路径中。 6. 完成编译:等待编译过程完成,然后你将在之前配置的安装路径中找到编译好的Boost库文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值