RK3399linux交叉编辑器下载,rk3399 源码下查找交叉编译工具链

本文详细介绍了如何在Android环境下找到交叉编译链的位置,对于rk3399平台,kernel的交叉编译链位于prebuilts/gcc/linux-x86/aarch64目录下,而Android的交叉编译链则依赖于$gccprebuiltdir和$targetgccversion变量,可以通过相关命令获取。同时,文章提供了获取Android编译环境变量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小伙伴突然问到 android 下交叉编译链在哪个位置,一脸发懵,所以记录一下

平台

Android版本

内核版本

rk3399

android 7.1

4.4

kernel 和android 的编译时分为两部分 所以我们需要分为两份查看

kernel

rk的编译命令基本是:

cd kernel/

make ARCH=arm64 rockchip_defconfig

make ARCH=arm64 rk3399-box-rev2.img -j

2.所以我们从kernel的Makefile入手即可

VERSION = 4 #kernel版本号

PATCHLEVEL = 4

SUBLEVEL = 103

EXTRAVERSION =

...

ifeq ($(ARCH),arm64)

ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9),)

CROSS_COMPILE ?= $(srctree)/../prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-

endif

endif

ifeq ($(ARCH),arm)

ifneq ($(wildcard $(srctree)/../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9),)

CROSS_COMPILE ?= $(srctree)/../prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androidkernel-

endif

endif

即kerenel的交叉编译链在 prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-

Android

1.android 也是使用Makefile编译的,但里面改的太多,所以不从这儿入手。

在android 编译模块时我们通常

source build/envsetup.sh

lunch 22

mmm 模块

2.所以从build/envsetup.sh入手

...

function setpaths()

{

....

# and in with the new

prebuiltdir=$(getprebuilt)

gccprebuiltdir=$(get_abs_build_var ANDROID_GCC_PREBUILTS)

# defined in core/config.mk

targetgccversion=$(get_build_var TARGET_GCC_VERSION)

targetgccversion2=$(get_build_var 2ND_TARGET_GCC_VERSION)

export TARGET_GCC_VERSION=$targetgccversion

# The gcc toolchain does not exists for windows/cygwin. In this case, do not reference it.

export ANDROID_TOOLCHAIN=

export ANDROID_TOOLCHAIN_2ND_ARCH=

local ARCH=$(get_build_var TARGET_ARCH)

case $ARCH in

x86) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin

;;

x86_64) toolchaindir=x86/x86_64-linux-android-$targetgccversion/bin

;;

arm) toolchaindir=arm/arm-linux-androideabi-$targetgccversion/bin

;;

arm64) toolchaindir=aarch64/aarch64-linux-android-$targetgccversion/bin;

toolchaindir2=arm/arm-linux-androideabi-$targetgccversion2/bin

;;

mips|mips64) toolchaindir=mips/mips64el-linux-android-$targetgccversion/bin

;;

*)

echo "Can't find toolchain for unknown architecture: $ARCH"

toolchaindir=xxxxxxxxx

;;

esac

if [ -d "$gccprebuiltdir/$toolchaindir" ]; then

export ANDROID_TOOLCHAIN=$gccprebuiltdir/$toolchaindir

fi

...

}

...

所以Android的交叉编译链在$gccprebuiltdir/$toolchaindir 也就是 prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-$targetgccversion/bin

其中的$gccprebuiltdir和$targetgccversion 的变量可以从上下文赋值得到

或者在命令行使用命令得到:

~/RK3399_7.1$ get_build_var TARGET_GCC_VERSION

4.9

~/RK3399_7.1$ get_build_var ANDROID_GCC_PREBUILTS

prebuilts/gcc/linux-x86

由上面可以看到ANDROID_TOOLCHAIN也就是android toolchain的位置

使用命令行也可以直接得到

~/RK3399_7.1$get_build_var ANDROID_TOOLCHAIN

/***/RK3399_7.1/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin

~/RK3399_7.1$

查看Android编译环境变量 多使用 get_build_var get_abs_build_var

下面时命令实现

105 # Get the exact value of a build variable.

106 function get_build_var()

107 {

108 if [ "$BUILD_VAR_CACHE_READY" = "true" ]

109 then

110 eval echo \"\${var_cache_$1}\"

111 return

112 fi

113

114 T=$(gettop)

115 if [ ! "$T" ]; then

116 echo "Couldn't locate the top of the tree. Try setting TOP." >&2

117 return

118 fi

119 (\cd $T; CALLED_FROM_SETUP=true BUILD_SYSTEM=build/core \

120 command make --no-print-directory -f build/core/config.mk dumpvar-$1)

121 }

标签:bin,x86,aarch64,linux,查找,build,rk3399,android,源码

来源: https://www.cnblogs.com/rootshaw/p/12938167.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值