使用gcc生成a.out文件格式

时间:2011-11-28 22:51:54

标签: c gcc compilation executable

如何在x86架构上使用gcc生成a.out文件格式?

使用nasm,我可以使用-f标志轻松完成此操作,例如:

[user@host]$ nasm -f aout start.asm 
[user@host]$ objdump -a start.o

start.o:     file format a.out-i386-linux
start.o

[user@host]$ 

在linux上,编译.c文件会生成一个elf对象。如何使用gcc生成a.out文件?

3 个答案:

答案 0 :(得分:12)

要使用gcc生成a.out格式,需要告知链接器这样做。你可以通过传递gcc的标志来感谢-Wl标志。

以下是您为a.out格式所做的事情:

gcc -Wl,--oformat=a.out-i386-linux file.c -o file.out

您还可以通过键入来显示所有支持的格式:

objdump -i

答案 1 :(得分:0)

这个问题有两个答案。一个是你需要编译一个以aout为目标的新GCC;它并不像翻转命令行开关那么简单。另一个答案是一个问题:为什么你真的需要这个?我无法立即想出一个正当理由。

答案 2 :(得分:0)

根据这篇文章 http://gcc.gnu.org/ml/gcc-help/2006-04/msg00262.html

你需要为不同的目标(i386-aout)构建gcc。听起来似乎有道理,因为a.out已被弃用多年(10 +)。