【发布时间】:2017-10-26 19:28:47
【问题描述】:
我遇到了两个用 C 语言制作简单内核的指南。
第一个为i686 架构开发内核,而第二个为i386 开发。
我感到困惑的主要部分是,我们使用交叉编译器来编译和链接第一个,但第二个没有使用。所以如果不使用交叉编译器就可以编译和链接第二个,为什么我们在第一个中使用交叉编译器?
【问题讨论】:
-
并非每个人都按照特定标准进行编码。许多人没有意识到不使用交叉编译器可能存在陷阱。大多数情况下,如果有问题,它可能与
libgcc库有关。过去,主机发行版为其环境应用了可能需要主机环境资源的补丁。使用交叉编译器将确保您不会生成可能与主机环境相关的代码。 OSDEV 采取了他们希望您使用交叉编译器的立场,因此他们不必处理可能与主机环境相关的问题。 -
OSDEV Wiki 提供了一些关于他们为什么喜欢人们使用交叉编译器的信息:wiki.osdev.org/Why_do_I_need_a_Cross_Compiler%3F
-
感谢您的评论,我现在有了更清晰的想法! :)
标签: c operating-system kernel cross-compiling osdev