2014-02-10 167 views
4

我研究了很多关于网络上的ELF文件,但我找不到我想要的。我正在Linux操作系统上编写C和C++代码,我正在使用gcc和Kate程序。完成我的代码后,我想生成ELF可执行文件。我只能生成“a.out”文件,我不需要它。我如何获得ELF文件? ELF文件是由什么发生的?或者是否有可能用这个程序生成这个文件?如何在Linux上生成ELF文件?

+0

a.out是一个ELF文件。 –

+0

可能重复[创建ELF而不是a.out](http://stackoverflow.com/questions/5565594/creating-elf-instead-of-a-out) –

回答

11

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

实际上,您将使用构建器程序(如make)来驱动gcc命令。请参阅this answer

gcc的默认输出文件仍被命名为a.out(由于历史原因),但是是ELF文件。你真的想要问gcc输出一个更可爱的名字的可执行文件。

简单的例子,你编码一个单一文件hello-world.c程序。您可以使用例如

gcc -Wall -g hello-world.c -o hello-world-bin 

(论据为了gcc是相当重要的!)

和生产hello-world-binELF可执行文件。请与

file hello-world-bin 

然后用

./hello-world-bin your arguments to it 

后来运行它,学习如何使用调试器gdb上。

另请参阅thisthat的答案。

+1

非常具有描述性和有用的评论。我非常了解。 –

相关问题