【问题标题】:Getting started in creating simple bootable C program开始创建简单的可启动 C 程序
【发布时间】:2011-01-12 17:53:22
【问题描述】:

有人可以指导我创建一个简单的可启动 hello world 程序的路径/步骤吗?我有 C/C++ 的基本知识。

我的目标是创建一个非常简单的操作系统。

我想要尽可能多的相关参考和示例链接。

【问题讨论】:

  • 搜索术语引导加载程序。大量在线资源。见:codeproject.com/KB/tips/boot-loader.aspx
  • 我认为这里最大的问题是“在什么处理器上?”在大多数情况下,我建议查看该处理器的引导加载程序以获得一个想法 - 是的,如果您希望程序真正独立,您将编写一些汇编程序、基本输出例程等。跨度>
  • 无论你在它前面放了多少非常,即使是一个简单的操作系统也需要时间......尤其是当你想开始用键盘说话时。 :-)
  • @Frank Heck,试图在屏幕上打印一些东西会变得很困难。您需要某种显示驱动程序/帧缓冲区驱动程序 AFAIK。

标签: boot


【解决方案1】:

参见this. 这是一个非常基本的引导加载程序的教程。它与 C/C++ 没有太大关系,但它提供了一些关于引导加载程序基本构建块的非常好的信息。

如果您真的对构建模块感到好奇,可以使用教科书形式的更深入的资源。例如,本教程没有解释为什么引导加载程序必须以55 AA 结尾。另外,它比较窄。

【讨论】:

  • 感谢您插入 OSdever.net。如果有人有任何问题,请尝试 forums.osdever.net。我们很擅长互相帮助;)
  • 这个答案并不真正符合 SO 的精神。我迟到了,我知道。
【解决方案2】:

您想构建一个静态链接的二进制文件(不涉及 ld.so),并通过跳转到其入口点来启动它。入口点通常是 .text 部分的开始。 Maye 在其上运行 objdump --section-headers image 以找出其地址。

如果您尝试在嵌入式设备上运行,请查看嵌入式操作系统的内核是如何构建和引导的。例如,看看 U-Boot 如何构建一个基于 Ångström linux 的系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2013-04-05
    相关资源
    最近更新 更多