带有主机工具链的buildroot环境

时间:2012-05-31 12:31:41

标签: buildroot

用于运行测试用例等。我想为Host系统(/ usr / bin / gcc等)编译部分buildroot环境。

我尝试在/ usr中指定external_toolchain,但这失败了。有没有人设法做过这样的事情?

buildroot手册说这是不受支持的,因为它们无法将其导入rootfs。但是对于测试用例,rootfs不是必需的。

2 个答案:

答案 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; \