gcc- linkovani, divna chyba

Krata krata na matfyz.cz
Neděle Srpen 4 17:19:27 CEST 2002


> Zdravim, 
>  kdyz se pokousim slinkovat svuj projekt dostanu zvlastni chybu
> 
> pustim takovyto prikaz (to uvadim jen pro uplnost) 
> gcc -I/afs/ms.mff.cuni.cz/home/kratj9cm/BIG/SDL/include 
> -I/afs/ms.mff.cuni.cz/home/kratj9cm/BIG/SDL/include/SDL -D_REENTRANT 
> -I/afs/ms/uk/kratj9cm/BIG/local/include -I.  -o beast  main.o 
> ./math/libbeast_math.a ./object/libbeast_object.a ./misc/libbeast_misc.a 
> ./projection/libbeast_projection.a ./system/libbeast_system.a 
> ./misc/libbeast_misc.a ./parser/libbeast_parser.a 
> ./materials/libbeast_materials.a ./scenes/libbeast_scenes.a 
> -L/afs/ms.mff.cuni.cz/home/kratj9cm/BIG/SDL/lib 
> -Wl,-rpath,/afs/ms.mff.cuni.cz/home/kratj9cm/BIG/SDL/lib -lSDL -lpthread 
> -L/afs/ms/uk/kratj9cm/BIG/local/lib -l3ds -lGL -lGLU -lSDL_image -lm
> 
> a jedna z chyb (konkretne ta prvni ostatni jsou velmi podobne) je tato 
> 
> ./parser/libbeast_parser.a(parser_3ds.o): In function 
> `parser::parser_3ds::load_into_scene_materials(scenes::scene *)':
> /afs/ms.mff.cuni.cz/uk/kratj9cm/BIG/projects/l33t/beast/parser/parser_3ds.cpp:94: 
> undefined reference to `misc::name::set_name(char const *)'
> 
> kdyz ovsem pustim nm ./misc/libbeast_misc.a (jeden z .a ktere pridavam 
> gcc) tak vypise mimo jine toto
> name.o:
> 0000004c T _._Q24misc4name
> 00000000 ? __FRAME_BEGIN__
> 00000000 T __Q24misc4name
> 00000010 T __Q24misc4namePCc
>          U __builtin_delete
>          U __builtin_vec_delete
>          U __builtin_vec_new
> 00000080 T get_name__Q24misc4name
> 0000008c T set_name__Q24misc4namePCc
> 
> tedy funkce set_name tam je (v namespace misc a ve tride name). Ve 
> zdrojacich se zda byt vse v poradku. 
> Problem mi vznikl kdyz jsem se pokusil z projektu vysekat libtool (kdyz 
> jsem kompiloval pomoci libtoolu tak na stejnych zdrojacich vse fungovalo) 
> 
> Nevite nekdo kde by mohl byt problem? 
> Diky moc Krata
> 
tak na radu pana Horaka jsem se pokusil zamichat s poradim *.a a nakonec 
jsem to nejak doporadku dal. Jen si nedovedu predstavit co se stane kdyz 
se mi nekde objevi zavislost "tamAzpet". To uz pak prohazovani poradi asi 
nepomuze....

Nicmene nevite nekdo proc kdyz linkuji 
gcc main.o neco.a neco2.a ..... tak evidentne zalezi na poradi zatimco
kdyz dam 
gcc main.o neco.o neco2.o neco3.o neco4.o ... na poradi nezalezi? (je to 
pravda?)

Krata



Další informace o konferenci Linux