Busybox编译Failed(Xen On Qemu for arm64)

一、问题描述:在编译Busybox时更换平台时,会出现Failed的日志报警:

make -j2 0=$BUILD_DIR/busybox_arm64/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

f064dcedeb8f482cb412fa6038b46715.png

发生原因,是由一个未定义的undefined reference to `stime'函数引起的:

7884a1e2eef44c859616ca7a79b0436c.png

6f369b71143647828adaf69b1d8e8b36.png

解决方法是查找关键词,并进入libbb/missing_syscalls.c,将控制stime生效的宏打开:

grep -rn "stime("

8aad9e91ba7f4891a9f1c8ed430e0e5f.png

8790d6c23d2344fc8d0d82edfafbddb5.png

再编译结果:

make -j2 0=$BUILD_DIR/busybox_arm64/ ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-

0249db6520734d91984fff6a3388ac21.png

        error的根本原因,由于新的平台的交叉编译链aarch64-linux-gnu-gcc所链接的库是没有stime函数定义的,在旧的平台的交叉编译工具链是有这个函数stime的生效的。简单地说就是交叉编译的IDE环境不一样

二、gcc-aarch64-linux-gnu、aarch64-linux-gnu-gcc、aarch64-linux-gnu-有什么区别

        gcc-aarch64-linux-gnu、aarch64-linux-gnu-gcc 和 aarch64-linux-gnu- 是与交叉编译工具链相关的术语,它们之间的区别在于命名和使用场景的不同。

术语解释:
1. gcc-aarch64-linux-gnu
这是一个软件包的名字,通常指的是包含整个交叉编译工具链的软件包。这个包可能包含了编译器 (gcc)、汇编器 (as)、链接器 (ld) 等一系列工具。

2. aarch64-linux-gnu-gcc
这是一个特定的编译器的名称,指的是用于 AArch64 架构的 GCC 编译器。它是一个具体的可执行文件,用于编译源代码。

3. aarch64-linux-gnu-
这是一个前缀,通常用于指定一系列交叉编译工具。当你配置交叉编译工具链时,通常会在 Makefile 或其他构建配置文件中指定这个前缀,以指示所有相关工具都使用相同的架构和平台标识符。

sudo apt install gcc-aarch64-linux-gnu

aarch64-linux-gnu-gcc --v

CROSS_COMPILE=aarch64-linux-gnu-

编译器:aarch64-linux-gnu-gcc
汇编器:aarch64-linux-gnu-as
链接器:aarch64-linux-gnu-ld

aarch64-linux-gnu-gcc -v 是一个命令,用来显示 aarch64-linux-gnu-gcc 编译器的详细版本信息和配置情况。这个命令非常有用,因为它可以提供关于编译器的详细信息,包括它的版本号、编译选项、搜索路径等

示例:

Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/11/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.2.0-17ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,c++,go,lto-assembly --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-system-zlib --enable-targets=all --enable-multilib --disable-werror --with-arch=armv8-a+crc+crypto --with-fpu=neon --with-float=hard --with-mode=thumb --with-tune=cortex-a57 --enable-bootstrap --enable-lto --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
Supporting plugins: yes
gcc version 11.2.0 (Ubuntu 11.2.0-17ubuntu1~22.04)
/home/user/test.c
/tmp/ccFzD6JX.o

  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值