如何使用GCC生成ELF文件?

Can*_*sız 5 executable gcc file-format compilation elf

我正在Linux OS上编写C和C++代码,我正在使用GCC.完成我的代码后,我想生成一个ELF文件.我只能生成"a.out"文件而我不需要它.我怎样才能获得ELF文件?ELF文件出现的原因是什么?或者是否可以使用此程序生成此文件?

Bas*_*tch 16

编译器(即gccg++)将调用ld生成ELF可执行文件的链接器().

实际上,您将使用构建器程序(如make)来驱动gcc命令.看到这个答案.

默认输出文件gcc仍然被命名a.out(由于历史原因),但是是ELF文件.而你真的想要gcc输出一个更具花哨名称的可执行文件.

简单的例子,您编写单个文件hello-world.c程序.你可以用eg编译它

 gcc -Wall -g hello-world.c -o hello-world-bin
Run Code Online (Sandbox Code Playgroud)

(gcc很多事情的争论顺序!)

并且生成的hello-world-binELF可执行文件.检查

 file hello-world-bin
Run Code Online (Sandbox Code Playgroud)

然后运行它

 ./hello-world-bin your arguments to it
Run Code Online (Sandbox Code Playgroud)

稍后,学习如何gdb在其上使用调试器.

另见这个那个答案.

  • 非常具有描述性和有用的评论。我非常明白。 (2认同)