用于运行测试用例等。我想为Host系统(/ usr / bin / gcc等)编译部分buildroot环境。
我尝试在/ usr中指定external_toolchain,但这失败了。有没有人设法做过这样的事情?
buildroot手册说这是不受支持的,因为它们无法将其导入rootfs。但是对于测试用例,rootfs不是必需的。
答案 0 :(得分:0)
是的,不幸的是,这是不可能的。为了对Buildroot有用,工具链必须是一个“纯粹的”工具链,即只包含C库二进制文件和头文件。你/ usr在你的主机上堆满了大量的库,而且由于Buildroot制作了工具链sysroot的完整副本(在你的情况下,将是/ usr),它会复制很多很多东西。
所以当然,这不是我们支持的东西,我们不打算支持这一点。您还可以决定使用x86或x86_64交叉编译器构建程序,让Buildroot生成最小的Linux系统,并直接在开发PC上进行chroot。
答案 1 :(得分:0)
当前文档似乎也解释了这是不可能的https://github.com/buildroot/buildroot/blob/2018.08/docs/manual/configure.txt#L198
我们也不支持使用分发工具链(即 gcc / binutils / C库(由您的发行版安装)作为 工具链为目标构建软件。这是因为 分发工具链不是“纯”工具链(即 C / C ++库),因此我们无法将其正确导入到Buildroot中 建立环境。因此,即使您要为x86或 x86_64目标,您必须使用以下命令生成交叉编译工具链: Buildroot或crosstool-NG。
此外,当前的Buildroot似乎正在检查您的工具链路径是否似乎是全局工具链,如果它是https://github.com/buildroot/buildroot/blob/2018.08/toolchain/helpers.mk#L395
with_sysroot=`$${__CROSS_CC} -v 2>&1 |sed -r -e '/.* --with-sysroot=([^[:space:]]+)[[:space:]].*/!d; s//\1/'`; \
if test "$${with_sysroot}" = "/" ; then \
echo "Distribution toolchains are unsuitable for use by Buildroot," ; \
echo "as they were configured in a way that makes them non-relocatable,"; \
echo "and contain a lot of pre-built libraries that would conflict with"; \
echo "the ones Buildroot wants to build."; \
exit 1; \
fi; \