【问题标题】:cross compiler error for ARM Beaglebone blackARM Beaglebone black 的交叉编译器错误
【发布时间】:2020-12-15 09:41:40
【问题描述】:

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

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

目标机器是beaglebone black:

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 

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

【问题讨论】:

  • 您安装了哪个版本的 Ubuntu,并且在您安装时确实安装了 apt-get install gcc-arm*
  • @domen 我的 Ubuntu 版本是 20.04 LTS,我根据link 的可能解决方案使用该命令安装了 gcc-arm,它不是很明确
  • 那个解决方案已经很老了,而且还提到了 32 位库。这与您的情况有关吗?而且,实际安装了什么? arm-linux-gnueabi-gcc 现在真的存在吗(这是缺少库的情况)还是现在有其他名称的编译器?
  • 我不确定它是否存在,我愿意切换编译器版本来完成工作,但是这样做的正确语法问题
  • 昨天刚在 ubuntu 20.04 上安装。

标签: linux gcc arm cross-compiling beagleboneblack


【解决方案1】:

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

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

【讨论】:

  • 很高兴读到。当且仅当这是我上面的回答让您想到缺少的sudo,您可能想要接受它。
【解决方案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 位系统上运行的 WSl/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 工具链,而不是发行版提供的工具链。

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2014-12-23
    • 2013-10-10
    • 1970-01-01
    相关资源
    最近更新 更多