我正在运行 Arch Linux 并使用
sudo pacman -Sy aarch64-linux-gnu-gcc
安装了交叉编译器工具链。
现在我为此自定义工具链配置了 buildroot,详细信息如下:
我收到如下构建错误:
$ 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
请不要关闭问题。这肯定与编程和交叉编译有关。如果您仍然要关闭它,至少告诉我们还需要在哪里提出这个问题。
--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
符号链接来解决此问题。