编译C代码以在没有OS的系统上运行?

时间:2015-03-05 10:12:38

标签: c x86 operating-system

如何编译使用printf等标准函数的C源代码在没有OS的系统上运行?

我尝试使用GCC静态链接,但似乎我遗漏了一些东西。有人可以解释一下GCC如何做到这一点?

2 个答案:

答案 0 :(得分:0)

  

没有操作系统

很难。您的示例printf()表示输出到显示。这是(除了许多其他事情)一个操作系统的任务。甚至BIOS也是一个操作系统,能够显示文本(并响应键盘按下)。

因此,您必须决定运行程序的最简单操作系统,然后您可以针对该操作系统进行交叉编译。

答案 1 :(得分:0)

如果通过“没有操作系统”你的意思是你正在编译在嵌入式平台上运行那么printf()将没有任何意义,因为平台没有标准输出,这是printf()指向的地方在操作系统上(这就是它在stdio标题中的原因)。

嵌入式平台通常带有其他输出或监控数据或状态的方法,例如更改GPIO引脚状态,将数据发送到通信外设(这将需要您为其编写驱动程序),或者您的程序加载器/ IDE可能具有一些表达观察或反馈支持。

某些嵌入式设备制造商为特定设备提供编译器,在这种情况下可能附带标准C库,但仍需要使用printf()进行配置。