2014-12-30 6 views
1

Я пытаюсь скомпилировать мой код в виде необработанных двоичных данных и, как было предложено другими SO (вроде this и this) Я попытался objdump:компилировать код для сырой двоичный

$ gcc -c foo.c 
$ objcopy -O binary foo.o foo.bin 

Тогда я попытался убедиться, если это действительно:

$ objdump -d foo.o 

foo.o:  file format elf64-x86-64 


Disassembly of section .text: 

0000000000000000 <main>: 
    0: 55      push %rbp 
    1: 48 89 e5    mov %rsp,%rbp 
    4: 48 83 ec 10    sub $0x10,%rsp 
    8: 89 7d fc    mov %edi,-0x4(%rbp) 
    b: 48 89 75 f0    mov %rsi,-0x10(%rbp) 
    f: bf 00 00 00 00   mov $0x0,%edi 
    14: b8 00 00 00 00   mov $0x0,%eax 
    19: e8 00 00 00 00   callq 1e <main+0x1e> 
    1e: b8 00 00 00 00   mov $0x0,%eax 
    23: c9      leaveq 
    24: c3      ret 

$ hexdump -C foo.bin 

00000000 14 00 00 00 00 00 00 00 01 7a 52 00 01 78 10 01 |.........zR..x..| 
00000010 1b 0c 07 08 90 01 00 00 1c 00 00 00 1c 00 00 00 |................| 
00000020 00 00 00 00 25 00 00 00 00 41 0e 10 86 02 43 0d |....%....A....C.| 
00000030 06 60 0c 07 08 00 00 00       |.`......| 
00000038 

Очевидно, что-то не так. Я проверил это с результатами кросс-компиляции gcc, с теми же явно неверными результатами.

+0

Не следует ли вам связать, прежде чем конвертировать в корзину? – Michael

+1

В любом случае, один из комментариев к одному из ответов, на которые вы ссылались, предлагает использовать '-j .text' в качестве аргумента для' objcopy'. – Michael

+1

Попробуйте 'objcopy -j text -O двоичный'. –

ответ