Otázky týkající se vazebné editoru GNU „ld“?

hlasů
2

Mám 2 obj soubory sestaven s GNU jako jsou:

  • ao: můj hlavní program
  • bo: některé užitkové funkce

ao nemá vstupní bod. Konečný propojený soubor bude načten do paměti a spuštění se přesune na jeho samém počátku zatížené adresu, kde je první instrucion Ao

Teď chci, aby jejich propojení s GNU ld . A já chci, aby ao dostavit bo do výsledného souboru. Jak bych mohl kontrolovat to? Musím udělat vlastní sekci a psát ve spojce skriptu, jako je tento:

SECTIONS
{
  . = 0x7c00;
  .text : { *(.text) }
  .my_custom_section : { *(.my_custom_section) }
  .data : { *(.data) }
  .bss  : { *(.bss) }
}

OUTPUT_FORMAT(binary)

Aktualizace

Je tu něco, co se touto otázkou v pořádku? Řekl jsem psát to špatně? Pokud ano, dejte mi prosím vědět, kluci. Mnohokrát děkuji.

V současné době jsem zjistil, že příkazového řádku sekvence vstupních souborů se zdá být relevantní.

Pokud se mi takhle:

ld a.o b.o -o final.bin

Obsah od pláže Ao objeví před bo

Pokud se mi takhle:

ld b.o a.o -o final.bin

Bude to něco jiného.

Je to znamenalo, které mají být kontrolovány takhle?

Položena 02/09/2010 v 12:37
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
2

Podle návodu :

Možnosti, které se vztahují k souborům ... způsobují soubor být čten v okamžiku, kdy se objeví volba v příkazovém řádku, vzhledem k souborům objektů a dalších možností souborů

Takže pořadí souborů v binárním je pořadí, ve kterém se zobrazují na příkazovém řádku.

Proto se chtěl být řízen jak jste zmínil ve své aktualizaci.

Odpovězeno 03/09/2010 v 02:43
zdroj uživatelem

hlasů
0

Pořadí operací ld je ve skutečnosti relevantní.

Pokud není výslovně uvedeno nějak, vstupním bodem je první bajt kódu prvního souboru v seznamu.

Výsledný spustitelný soubor má vždy obsah .o souborů ve vyvolání pořadí. (S .A soubory to komplikuje).

Odpovězeno 03/09/2010 v 02:34
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more