【问题标题】:Creating ELF instead of a.out创建 ELF 而不是 a.out
【发布时间】:2011-07-30 18:02:17
【问题描述】:

我需要使用 gcc 生成一个简单的“Hello World”ELF32 可执行文件。 我似乎没有 gcc-elf 命令。 是否可以在不重新构建 gcc 的情况下创建 ELF 二进制文件而不是 a.out?

(我假设通过一些选项应该可以,但不确定如何继续)

【问题讨论】:

  • 快速查看 man for gcc 指向 -melf 选项.. 但我猜它会有所不同,具体取决于您所针对的架构..
  • 你的目标平台是什么?

标签: c gcc elf


【解决方案1】:

检查文件 a.out

$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

我相信默认名称保留为 a.out,但格式为 ELF。

【讨论】:

  • a.out 是必需的标准编译器/链接器输出名称,并且早在有人谈到“a.out 文件格式”之前就已经是默认输出名称。不幸的是,这个名字最终变得像这样模棱两可......
  • 这个名字代表“汇编输出”。
【解决方案2】:

a.out 已经很老了,我们说的是 linux 的内核版本 1.2。假设您在任何远程最近的 linux 平台上运行,默认情况下您正在生成 elf 可执行文件。对输出可执行文件使用file 命令进行验证。例如:

$ file server
server: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2015-12-16
    相关资源
    最近更新 更多