强制GCC构建系统交叉编译或构建交叉编译器

时间:2019-05-06 23:45:40

标签: c gcc

考虑有关构建GCC的两个相关任务(编译器工具链本身,包括目标库):

  1. 从正在运行的任何系统($build = $host)到固定的$target构建交叉编译器。

  2. 交叉编译本机编译器以在$host = $target上运行(独立于所运行的$build)。

情况2特别涉及可复制的构建。理想情况下,这种情况下的输出二进制文件应该是确定性的,完全独立于您在其上构建系统的系统($build)。但是,由于GCC通过比较$build$host的值来决定是否进行交叉编译,因此如果$build恰好等于{{1 }}。

同样,情况1在不同条件下具有不同的行为:$host$host的虚假相等性(因此也包括三个$target)。从某种意义上讲,这没有什么问题,因为没有可再生性属性被破坏(至少不是我所知道的),但是它对sysroot的工作方式产生了微妙的影响,我仍然不完全了解。

所以,我的问题是:在构建GCC时,有没有办法强制构建交叉编译器(情况1)或交叉编译(情况2),而不是使用行为取决于$build$host是彼此不同还是与$target不同?通过$build部分地 可以实现此目的,但是某些构建行为仍然不同。我想到的一种显而易见的愚蠢方法是获取--with-sysroot的输出并手动将垃圾附加到其上,以确保不匹配,但是我不确定这不会中断是可靠的。

0 个答案:

没有答案