我正在Linux OS上编写C和C ++代码,我正在使用GCC。完成我的代码后,我想生成一个ELF文件。我只能生成“a.out”文件而我不需要它。我怎样才能获得ELF文件? ELF文件出现的原因是什么?或者是否可以使用此程序生成此文件?
答案 0 :(得分:15)
编译器(即gcc
或g++
)将调用生成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-bin
是ELF可执行文件。检查
file hello-world-bin
然后用
运行它 ./hello-world-bin your arguments to it
稍后,了解如何在其上使用gdb
调试器。