如何在 arch linux 上为自定义预装工具链配置 buildroot

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

我正在运行 Arch Linux 并使用

sudo pacman -Sy aarch64-linux-gnu-gcc
安装了交叉编译器工具链。

现在我为此自定义工具链配置了 buildroot,详细信息如下: enter image description here

我收到如下构建错误:

$ make -j24
>>> toolchain-external-custom  Configuring
<command-line>: fatal error: /usr/aarch64-linux-gnu//usr/include/linux/version.h: No such file or directory
compilation terminated.
make: *** [package/pkg-generic.mk:279: /home/naveen/.repos/src/arm64/buildroot-2024.08/output/build/toolchain-external-custom/.stamp_configured] Error 1

我正在努力解决这个错误。因为

/usr/
里多了一个
/usr/aarch64-linux-gnu//usr/include/linux/version.h
。如果我从工具链路径中的配置中删除
/usr/
,那么我会收到另一个错误:

$ make -j16 /usr/bin/make -j1 O=/home/naveen/.repos/src/arm64/buildroot-2024.08/output HOSTCC="/usr/bin/gcc" HOSTCXX="/usr/bin/g++" syncconfig make[1]: Entering directory '/home/naveen/.repos/src/arm64/buildroot-2024.08' make[1]: warning: -j1 forced in submake: resetting jobserver mode. make[1]: Leaving directory '/home/naveen/.repos/src/arm64/buildroot-2024.08' >>> toolchain-external-custom Configuring <command-line>: fatal error: /usr/aarch64-linux-gnu//usr/include/linux/version.h: No such file or directory compilation terminated. make: *** [package/pkg-generic.mk:279: /home/naveen/.repos/src/arm64/buildroot-2024.08/output/build/toolchain-external-custom/.stamp_configured] Error 1
请不要关闭问题。这肯定与编程和交叉编译有关。如果您仍然要关闭它,至少告诉我们还需要在哪里提出这个问题。

linux cross-compiling buildroot
1个回答
0
投票
Buildroot 外部工具链必须是“sysrooted”工具链(基本上,GCC 必须使用

--with-sysroot

 配置选项进行编译)。 Buildroot 还期望 sysroot 被构造为普通的根文件系统,即具有一个 
/usr
 目录,其中包含 
include
lib
share
 等。因此,事实上,双 
/usr
 是预期的:工具链(包括其 sysroot)安装在 
/usr/aarch64-linux-gnu
 中,并且其下应该还有另一层 
/usr

我怀疑 Arch 工具链实际上是使用

--with-sysroot

 选项构建的,但不是正确的 sysroot 工具链。通常,可通过发行版安装的跨工具链不是 sysroot 的,即它的包含和库路径位于正常位置(
/usr/include
/usr/lib
),但在中间某处注入了额外的架构元组。 Buildroot 不支持该类型的工具链。

Arch 工具链实际上可能已正确设置为 sysroot,但只是没有

/usr

 组件。在这种情况下,您可以通过在 
usr -> .
 中创建 
/usr/aarch64-linux-gnu
 符号链接来解决此问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.