编译交叉编译器来编译内核,使用MinGW

标签 c compilation operating-system kernel cross-compiling

我正在寻找一种在 Windows 上编译爱好者编写的内核和微操作系统的方法,到目前为止,我在所有论坛和其他此类地方找到的主要是“构建交叉编译器”的建议。不幸的是,我现在缺乏相关知识,所以有人可以告诉我如何使用 MinGW 编译 GCC/Binutils 以在 64 位 Windows 7 安装上运行吗?感谢您抽出时间,埃尔克林。

最佳答案

将 gcc 编译为交叉编译器应该相当简单,但我从未在 Windows 上尝试过。

要构建为交叉编译器,gcc 需要配置 --host=<host_os>--target=<target_os哪里<host_os>是编译器将运行的平台(在您的情况下是 Windows)和 <target_os>是您的目标平台。正如你所说,它是一个业余爱好者操作系统,它可能是 1586-elf或类似的。

http://wiki.osdev.org/GCC_Cross-Compiler有更深入的信息。尝试一下该页面,看看是否有帮助。在 Windows 上使用此方法应该像安装带有 GCC 的 Cygwin 以及下载和构建 binutils 和 gcc 一样简单。

编辑

通过使用 objcopy 解决了这个问题剥离使用 --nostdlib 编译的 PE 文件。如果您想要的只是一个平面二进制文件,那么这可能是您的一个选择。

关于编译交叉编译器来编译内核,使用MinGW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10371246/

相关文章:

c - C : Nested blocks 中的作用域规则

c++ - 使用 clang v3.4 在 ubuntu_x86-64 上为 arm 编译一个 c/c++ 源文件

c - 尝试用 C 语言制作整数到二进制转换器,但它只打印随机字符串

perl - 覆盖在模块中定义但在其运行时阶段使用之前的函数?

oracle - 几个Oracle Pl/SQL 包的编译可以是一个原子操作吗?

networking - 传输层在哪里运行?

c - 如何在 C 中以任何预处理器指令形式定义一组配置

c - execve() 和共享文件描述符

c - 如何将两个位图与 AVX2 混合 80-20%?

c++ - 使一个类可用于其他程序