交叉编译器真的需要吗?

时间:2017-05-26 02:05:22

标签: c operating-system kernel cross-compiling osdev

我遇到了两个用C编写简单内核的指南。

  1. http://wiki.osdev.org/Bare_Bones
  2. https://github.com/arjun024/mkernel
  3. 第一个开发i686架构的内核,而第二个开发i386

    我发现令人困惑的主要部分是,我们使用交叉编译器来编译和链接第一个,但是没有使用任何第二个。因此,如果可以在不使用交叉编译器的情况下编译和链接第二个,为什么我们在第一个使用交叉编译器?

1 个答案:

答案 0 :(得分:0)

交叉编译器是用于编译到不同平台或体系结构的编译器。如上面的评论所述,osdev Wiki上有很多信息。但是通常,仅当您编译到与主机相同的平台时才需要交叉编译器。如果您的主机是x86_64,并且要针对x86_64制作操作系统,则不需要交叉编译器。否则,如果您使用的是x86_64机器并针对x86(32位)或arm进行编译,则确实需要交叉编译器。

话虽如此,Michael Petch的评论完全正确,即使用交叉编译器通常是非常安全的选择,从而消除了一些与主机有关的问题。尽管我本人从未经历过这些问题,但这些问题确实令人担忧。