我正在 Linux 操作系统上编写 C 和 C++ 代码,并且使用 GCC。完成我的代码后,我想生成一个 ELF 文件。我只能生成“a.out”文件,但我不需要它。如何获取 ELF 文件? ELF 文件出现的原因是什么?或者是否可以用这个程序生成这个文件?
编译器(即gcc
or g++
)将调用链接器(ld
) 生成 ELF 可执行文件。
在实践中,您将使用构建器程序(例如make
) 驾车gcc
命令。看这个答案 https://stackoverflow.com/a/20146082/841108.
默认输出文件为gcc
仍被命名为a.out
(由于历史原因)而是一个ELF文件。你真的想问gcc
输出一个具有更奇特名称的可执行文件。
简单的例子,你编写一个文件hello-world.c
程序。您可以使用例如编译它
gcc -Wall -g hello-world.c -o hello-world-bin
(order of arguments to gcc
matters a lot!)
以及所产生的hello-world-bin
is an ELF http://en.wikipedia.org/wiki/Executable_and_Linkable_Format可执行的。检查与
file hello-world-bin
然后运行它
./hello-world-bin your arguments to it
稍后学习如何使用gdb
调试器就可以了。
也可以看看this https://stackoverflow.com/a/20146082/841108 and that https://stackoverflow.com/a/7937638/841108答案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)