gpt4 book ai didi

c - 尝试从 OS Dev 教程编译代码

转载 作者:行者123 更新时间:2023-12-04 12:37:59 28 4
gpt4 key购买 nike

这是一个很难问的问题,因为我敢肯定,我即将被仇恨者轰炸,他们评论说“如果我已经不能编写一个操作系统,我将永远无法编写一个操作系统系统”。好吧,我已经阅读了 Tanembaum 的现代操作系统、Linux 内核开发、了解 Linux 内核和其他我仍然不知道我是否可以编写一个操作系统,只有插入编写一个操作系统,我才会意识到我不知道什么不知道。最重要的是,我读过的书都没有费心去描述启动顺序/编译顺序。

无论如何,我不想消极,但我只想构建下面 bkerndev 教程中的示例代码,并拥有一个绝对最小的操作系统:

http://www.osdever.net/bkerndev/index.php?the_id=90

您可以从此处下载 zip 格式的相关源代码:

http://www.osdever.net/bkerndev/bkerndev.zip

当您尝试编译这个内核时,您会遇到由于某些代码损坏而导致的各种错误。另一位用户正在此处堆栈溢出寻求帮助:

compiling my own kernel (not from linux-kernel source)

虽然没有得到太多帮助。我通过添加 gcc 标志 fleading-underscores 和更改一些数据类型来解决这些错误。你可以在这里看到我的代码:

http://github.com/PhillipTaylor/farmix

代码将成功编译并给我留下一个 kernel.bin 可执行文件,但是当我从 grub 启动它时,我得到:

错误 13:无法识别或不受支持的格式(或类似的东西)

当我直接从作者的 zip 文件中获取 kernel.bin 并在我的 eeepc 上运行它时,它完全可以启动,所以我认为我在正确编译代码方面遇到了问题。我相信作者是从 Windows 机器上构建它的,但我正在尝试使用 Fedora 10 i386 和 GNU GCC 4.3 编译它,我认为这就是导致问题的原因所以我问你,我如何构建一个有效的可执行文件核心?我错过了正确的目标还是错误的二进制格式?

我真的很感激有人帮助我度过这个令人尴尬的“第一步”

最佳答案

我上面的评论不是很清楚。我的意思是“‘文件’命令在你的 kernel.bin 和他们的上报告了什么?”。链接器的输出是原始二进制文件。它应该以 grub 可识别的几个魔术词开头。它们在“mboot”附近的 start.asm 中定义。我怀疑你的和他们的不一样。

我手边没有 nasm,所以无法构建,但您可能想先比较 .bin 文件的前几个词。

关于c - 尝试从 OS Dev 教程编译代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949472/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com