【发布时间】:2015-05-06 16:00:45
【问题描述】:
如何编译使用 printf 等标准函数的 C 源代码,以便在没有操作系统的系统上运行?
我尝试使用 GCC 进行静态链接,但我似乎遗漏了一些东西。有人可以解释一下如何使用 GCC 来完成吗?
【问题讨论】:
-
wiki.osdev.org/GCC_Cross-Compiler 可能会为您提供一些信息。
-
我很好奇,你有没有让它在没有操作系统的情况下运行?我认为它仍然需要操作系统来完成大多数基本功能,如启动、退出、内存分配等。但是我可能错了。
-
呃,伙计们?!如果你从不费心去研究做一些简单的编程或交叉编译是如何工作的,你为什么要投反对票并给出有趣的 cmets?
-
您当然需要构建自己的“运行时库”。如果您编写准系统,那通常是静态库或链接到准系统主程序的一些源文件。作为起点,您使用一些 printf 实现,并简单地重写调用 fwrite() 的代码行以调用您自己的输出函数,这比预期的工作量少。看看你自己,例如在这里:opensource.apple.com/source/shell_cmds/shell_cmds-170/printf/…。如果你在 bash 运行期间做这种事情,你可以称之为 LINUX。
-
@user3479526 问题是 printf 依赖于操作系统,因此在没有操作系统的情况下静态链接和使用它是行不通的。另一方面,像 sprintf 这样的功能不需要操作系统。如果要打印一些文本,最好的办法是使用 sprintf 进行格式化,然后使用例程显示文本。不过,您将需要字体和图形函数来做到这一点。
标签: c x86 operating-system