U-boot 交叉编译:为什么不使用所选工具链进行 make?

问题描述 投票:0回答:1

我注意到了一个奇怪的问题。为了构建古老的 uboot (2012.10),我使用了外部工具链 (uClibc-ng)。我正在构建 ARM 目标。这是我正在使用的命令:

PATH='/home/build/src/build/x-tools/armv7a-g4.9.2-lnx3.2.69-uClibc-ng-1.0.22/install/arm-onie-linux-uclibcgnueabi/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' make CROSS_COMPILE=arm-onie-linux-uclibcgnueabi-

构建开始,但我无意中注意到,外部工具链没有被使用。我已经通过向 u-boot Makefile 添加几行来验证这一点:

+GCCVERSION = $(shell gcc --version | grep ^gcc | sed 's/^.* //g')
+ifeq "$(GCCVERSION)" "7.5.0"
+$(error *** IT DOES NOT SEEM LIKE YOU ARE USING CROSS-COMPILER TOOLCHAIN! ***)
+endif

很奇怪,因为分析日志似乎很明显,“CROSS_COMPILE=”前缀没有被使用。我尝试将 PATH 和 CROSS_COMPILE 导出到环境中,但它也不起作用。

我正在 Ubuntu-18 上的 Docker 容器中构建它。

我错过了什么?

makefile cross-compiling u-boot toolchain
1个回答
0
投票

这个问题问得好..不是很聪明。代替: (..) +GCCVERSION = $(shell gcc --version | grep ^gcc | sed 's/^.* //g') (..)

我应该测试: +GCCVERSION = $(shell $(CC) --version | (..))

基本上我调用的是 GCC 而不是 $CC,它将被设置为实际的交叉编译器。

© www.soinside.com 2019 - 2024. All rights reserved.