Portál AbcLinuxu, 16. července 2025 07:54


Dotaz: Problem se slinkovanim

23.5.2006 10:51 Setam
Problem se slinkovanim
Přečteno: 61×
Odpovědět | Admin
Ahoj všem, mám problém se slinkováním, spíš než s konkrétním problémem bych potřeboval poradit v obecné rovině. Způsob, kterým se snažím o překlad, je následující:

gcc -c mod_a.c gcc -c mod_b.c gcc -c mod_c.c gcc -c mod_d.c gcc -c mod_e.c

mod_a používá funkce definované v mod_d, mod_b používá fce z mod_e.

Při pokusu o slinkování

gcc -o mod_a -L. mod_a.o mod_b.o mod_c.o -L/path/to/lib -lm -ldl -lnsl

dostanu chybu v podobě nedefinovaných odkazů z mod_a.c na fce definované v mod_d.

Oč mi jde - potřeboval bych nakopnout správným směrem. Pokud tomu dobře rozumím, tak při překladu do objektového souboru se vytvoří tabulka referencí na funkce definované vně modulu, u kterých teda překladač nezná jejich adresu. Propojení odkazů z jednoho modulu s odpovídajícími funkcemi definovanými v jiném modulu je pak záležitost linkeru.

Proč mi linker jednotlivé moduly neslinkuje, když jsem mu jako parametr předal všechny "object-files" obsahující všechny používané funkce?

PS: Může na to mít vliv fakt, že některé z modulů byly napsané v lexu a odtud přeloženy? (.lex -> .c -> .o)?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.5.2006 11:34 ondra
Rozbalit Rozbalit vše Re: Problem se slinkovanim
Odpovědět | | Sbalit | Link | Blokovat | Admin
Opravdu jsou tam všechny .o soubory? Může jít o překlep, ale nevidím tam mod_d.o.
23.5.2006 12:59 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Problem se slinkovanim
Odpovědět | | Sbalit | Link | Blokovat | Admin
Však tam taky mod_d nemáš ?
gcc -o mod_a -L. mod_a.o mod_b.o mod_c.o -L/path/to/lib -lm -ldl -lnsl
Kde máš ten mod_d ?

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.