【问题标题】:C compiler for windows that compiles raw binaries?用于编译原始二进制文件的 Windows 的 C 编译器?
【发布时间】:2012-09-09 23:47:30
【问题描述】:

我需要一个可以编译原始二进制文件(无结构或头文件)的 C 编译器。我尝试使用 GCC,但我做不到。有人有什么建议吗?

【问题讨论】:

  • “我做不到”是什么意思?
  • 您的意思是要获取文件的内容并将它们构建到包含包含文件内容的数据部分的对象模块中?那么目标模块可以与其他目标模块一起编译成可执行程序,并且程序会将文件中的数据作为其映像的一部分?
  • 在 .COM 文件之外,没有在 Windows 下运行的“原始二进制文件”。你必须回到一些 16 位的、基于 DOS 的软件中才能找到一个可以做到这一点的 C 编译器。
  • 使用 GCC 的方式是生成一个目标文件,然后使用 objcopy 创建一个平面二进制文件:stackoverflow.com/q/3615392/163956
  • 请更新您的问题以阐明“编译原始二进制文件”的含义。您似乎在说编译器的 input 应该是“原始二进制文件”而不是 C 源代码。我想这不是你的意思。

标签: c++ c compiler-construction


【解决方案1】:

如果你正在制作自己的操作系统,你真的应该看看互联网上现有的一些教程。他们展示了如何创建“原始二进制文件”。参见例如OSDev wiki。例如bare bones tutorial

但要回答您的问题:您可以按照评论中的建议使用 objcopy 之类的内容,但推荐的方法是制作您自己的自定义链接器脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2011-05-17
    相关资源
    最近更新 更多