0.env
ubuntu-1804
ESDK-6.5.04ea2、linux-4.19、gcc-9.2
SOC:BCM47623EAP
1.前言
博通的toolchain需要单独安装,不像高通的toolchain已经包含在SDK中。
2.下载安装
1.确定所需要的toolchain
1.从顶层Makefile查找,
Makefile-> build/Makefile -> make.common
得到相关toolchain的log:
164 # for ARM, Linux 4.19
165 ifeq ($(strip $(BRCM_USE_ALT_TOOLCHAIN)),y)
166 DEFAULT_TOOLCHAIN_LINUX_4_19_0_ARM := $(ALT_ARM_TOOLCHAIN_TOP)
171 else
172 DEFAULT_TOOLCHAIN_LINUX_4_19_0_ARM := $(TOOLCHAIN_BASE)/crosstools-arm-gcc-9.2-linux-4.19-glibc-2.30-binutils-2.32
173 ...
1.从log可以分析出,默认使用的
else
后固定路径的toolchain,以下操作均从该默认路径为基础
2.log中明确多出了判断kernel内核版本的程序,将linux4.19前后的toolchain进行划分,而sdk最早支持linux4.19的就是这个esdk6.5版本,后续Makefile相关文件可能还会变更,注意后续变更是的影响。
该SDK使用如下toolchain:
crosstools-arm-gcc-9.2-linux-4.19-glibc-2.30-binutils-2.32
2.下载
1.从其他team中直接copy一份
2.从博通官网下载。(没账号应该不能下载吧,反正我一直是用账号访问博通的。)在官网直接搜toolchain全名就行,会有一个类似如下选项:
3.从arm下载相关toolchain,地址参考如下:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads/9-2-2019-12
4. 使用ct-ng自己定义一个toolchain,不建议这么干,自定义的toolchain缺少usr、lib32的link,自定义以后很多地方的命名和SDK中不符合,需要修改自动的toolchain、新建相关link等,可以用来编译单独的程序,不推荐用做SDK中toolchain。
PS:
推荐从博通官网下载toolchain,其次是从其他team的环境中直接copy。不推荐自定义生成toolchain。
3.安装
前言:
1.SDK中若不配置BRCM_USE_ALT_TOOLCHAIN的宏定义,则使用默认的toolchain路径,默认路径如下:
/opt/toolchains/crosstools-aarch64-gcc-9.2-linux-4.19-glibc-2.30-binutils-2.32
1.2 按默认toolchain路径配置,加压toolchain压缩包到上述路径中:
sudo mkdir /opt/toolchains/
sudo tar -jxvf crosstools-aarch64-gcc-9.2-linux-4.19-glibc-2.30-binutils-2.32.Rel1.12.tar.bz2 -C /opt/toolchains/
PS:
这里默认使用的64bit toolchain,压缩包里还有32bit toolchain。
3.使用
1.ESDK.README/README.47623文件中出了toolchain的配置和使用方法。
1.使用默认路径toolchain编译SDK
1.确定下默认路径/opt/toolchains/下确实有这个toolchain目录,然后就是直接编译就好:
make PROFILE=947623EAP
2.使用自定义路径toolchain编译SDK
1.定义部分变量,包括:
TOOLCHAIN_BASE
LD_LIBRARY_PATH
PATH
2.编译时需要在当前shell中定义如上变量。
参考如下:
2.1 新建PATH文件,存储如下内容:
TC_BASE_ROOT=/projects/hnd/tools/linux
GCC=crosstools-aarch64-gcc-5.5
KERNEL=linux-4.1
GLIBC=glibc-2.26
BINUTILS=binutils-2.28.1
export TOOLCHAIN_BASE=${TC_BASE_ROOT}/BCG
export LD_LIBRARY_PATH=${TOOLCHAIN_BASE}/${GCC}-${KERNEL}-${GLIBC}-${BINUTILS}/usr/lib:$LD_LIBRARY_PATH
export PATH=${TC_BASE_ROOT}/hndtools-armeabi-2013.11/bin:$PATH
2.2 导入,
source PATH
- 编译
make PROFILE=947623EAP
- 还可以只在编译时加入参数即可,博通给出的文档中给出的参考命令如下:
make PROFILE=96328GW TOOLCHAIN_TOP=/usr/local/toolchain