|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Dmitry E. Oboukhov 2:5004/75.151 28 Aug 2006 11:16:39 To : Grishka Chervonets Subject : получить чистый бинарник -------------------------------------------------------------------------------- GC> $ ld -e main -o test.elf test.o GC> ^^^^^^^--необходимо явно указать точку входа или обозвать ее _start GC> $ objcopy -S -O binary test.elf test.bin спасибо, вот так работает, наконец у меня получился нормально работающий бинарник, безо всяких библиотек, но остается вопрос такой: $cat main.c int i=5; int main(void) { while(1) i++; } если теперь objdump'ом дезасемблять то кода, инициализирующего переменную a мы не увидим: $arm-linux-objdump -d obj/test.elf obj/test.elf: формат файла elf32-littlearm Диассемблирование раздела .text: 00000000 <main>: 0: e59f200c ldr r2, [pc, #12] ; 14 <.text+0x14> 4: e5923000 ldr r3, [r2] 8: e2833001 add r3, r3, #1 ; 0x1 c: e5823000 str r3, [r2] 10: eafffffb b 4 <main+0x4> 14: 00008018 andeq r8, r0, r8, lsl r0 ну а в листинге, созданном при компиляции main.c в main.o есть секция: 9 .Ltext0: 10 .global i 11 .data 12 .align 2 13 .type i, %object 14 .size i, 4 15 i: 16 0000 05000000 .word 5 17 .text 18 .align 2 19 .global main 20 .type main, %function то есть надо как-то заставить сборщик по данному блоку включить код инициализации? или написать код инициализации самому, как? --- Mutt/1.5.11+cvs20060403 * Origin: Подходи, буржуй, глазик выколю! Глазик выколю, другой останется, чтобы знал, дерьмо, кому кланяться! (2:5004/75.151) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/39264a04926b.html, оценка из 5, голосов 10
|