ARM Beaglebone黑色的交叉编译器错误

问题描述

我正在尝试从运行Ubuntu的桌面交叉编译beaglebone黑色:

Linux DESKTOP-4UIP5QG 4.4.0-18362-Microsoft #836-Microsoft Mon May 05 16:04:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux

目标机器是长骨黑色:

Linux beaglebone 4.19.94-ti-r42 #1buster SMP PREEMPT Tue Mar 31 19:38:29 UTC 2020 armv7l GNU/Linux

我目前正在关注可以帮助我完成此操作的教程,但是我似乎找不到他们正在使用的编译器版本:https://www.itdev.co.uk/blog/building-linux-kernel-cross-compiling-beaglebone-black

我尝试通过以下方式安装编译器:

sudo apt-get install gcc-arm-linux-gnueabi

但是我收到错误

E: Unable to locate package gcc-arm-linux-gnueabi

所以我然后尝试使用以下方式安装gcc-arm编译器

sudo apt-get install gcc-arm*

但在安装此程序并尝试使用以下代码进行编译之后:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- bb.org_defconfig

我收到此错误

/bin/sh: 1: arm-linux-gnueabi-gcc: not found
init/Kconfig:17: Syntax error
init/Kconfig:16: invalid option
./scripts/clang-version.sh: 15: arm-linux-gnueabi-gcc: not found
./scripts/gcc-plugin.sh: 11: arm-linux-gnueabi-gcc: not found 
make[1]: *** [scripts/kconfig/Makefile:104: bb.org_defconfig] Error 1
make: *** [Makefile:534: bb.org_defconfig] Error 2 

任何帮助将不胜感激,谢谢。

解决方法

一种指向您要使用的确切工具链的确定性方法是在设置CROSS_COMPILE时提供其完整前缀。这样可以避免可能的与路径相关的错误,并且将用于构建的确切工具链的信息嵌入到您的构建脚本中。

完整示例-安装官方Arm gcc 9.2.0工具链并检索/构建beaglebone black的u-boot 20.04(使用您自己的u-boot和defconfig):

# gcc 9.2.0
mkdir -p /opt/arm/9
wget 'https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-none-eabi.tar.xz?revision=64186c5d-b471-4c97-a8f5-b1b300d6594a&la=en&hash=5E9204DA5AF0B055B5B0F50C53E185FAA10FF625'
tar Jxf gcc-arm-9.2-2019.12-x86_64-arm-none-eabi.tar.xz -C /opt/arm/9

# u-boot
wget https://github.com/u-boot/u-boot/archive/v2020.04.tar.gz
tar zxf v2020.04.tar.gz
cd u-boot-2020.04
make CROSS_COMPILE=/opt/arm/9/gcc-arm-9.2-2019.12-x86_64-arm-none-eabi/bin/arm-none-eabi- ARCH=arm mrproper am335x_evm_defconfig all

以上命令应在本机x86_64 Linux,在Windows上的VMWare或VirtualBox下运行的x86_64 Linux和在Windows 64位系统上的WS1 / WSL2 Windows Linux子系统上运行。

这就是说,如果您要调查特定问题,请确认安装了哪个工具链:

sudo dpkg --get-selections | grep gcc-arm
gcc-arm-linux-gnueabihf                         install

如果没有输出,则可能未安装您认为已安装的产品。您可以使用apt-cache search搜索系统上可用的软件包:

sudo apt-cache search gcc-arm-linux
gcc-arm-linux-gnueabihf - GNU C compiler for the armhf architecture
gcc-arm-linux-gnueabi - GNU C compiler for the armel architecture

安装软件包:

sudo apt-get install arm-linux-gnueabihf

验证编译器是否存在:

which arm-linux-gnueabihf-gcc
/usr/bin/arm-linux-gnueabihf-gcc

但是,我建议坚持使用Arm或Linaro工具链,而不要使用发行版。

,

sudo apt updateapt upgrade允许我运行命令:

sudo apt-get install gcc-arm-linux-gnueabi