linux elf转换bin 的一个有关问题(感觉挺难的)

linux elf转换bin 的一个问题(感觉挺难的)
我用我的linux 首先编译a文件 gcc -o a.c
编译出来了 a.o 文件。
之后 objcopy -O binary a.o a.bin
编译出了,a.bin文件。
那为什么我写了个程序,读出来他的开始几个字节是他的名字呢? 
我上网查,bin文件开始的7 个自己好像应该是 "BOOFF\a" 才对啊?
问题出在哪一步呢? 
谢谢,请高手指点!

或者,我想把linux编译出来的文件,转换成 .bin格式的不行吗?

------解决方案--------------------
你的bin,是指什么东西?
不要用windows环境下的事物,去理解linux环境下的事物。

在linux环境中,所有的文件都是文本文件。操作系统通过读取文件的头几个字节,来区分文件类型。
文件能否执行,由文件的属性来设置。你可以用“ls -l”命令,查看该文件是否是执行文件。
属性的具体解释,你看unix/linux的基础教程。
------解决方案--------------------
肯定是不一样的。
elf格式,就是执行文件。你再转换成其它格式,那很可能就不能运行了。

在windows环境中,一个文件是否能够执行,操作系统会检查该文件的副文件名。
而在unix/linux环境中,操作系统会读取该文件的头几个字节,从而判断是否应该由那个文件去调用它。文件名,只是给我们看的,操作系统会忽视它。
------解决方案--------------------
在unix/linux环境中,一个文件被设置成可以执行的文件时,使用如下命令设置文件的属性。
chmod a+x hello
当文件hello被设置成可执行时,操作系统在运行hello时,首先去读取hello文件头几个字节。通过该信息,去判断应该由哪个程序去调用hello程序。
------解决方案--------------------
......
你得 objdump elf 可执行文件,而不是 .o