Posted By: medvidek (Zase za polarnim kruhem) on 'CZprogram'
Title:     Re: Co zas delam blbe? (linux, gcc a linkovani)
Date:      Fri Dec 14 18:04:22 2001

   toz si odpovim sam :)

> g++ -xc++ -I../../include -c -o nthread.o nthread.cpp
> g++ -xc++ -c -o myfn.o myfn.cpp
> rm mylib.a
> ar -q mylib.a nthread.o myfn.o
> g++ -xc++ -I../../include -c -o main.o main.cpp
> g++ -s -lpthread mylib.a main.o

> Co delam blbe? Asi je to nejaka trivialita. Diky

reseni je zmenit posledni radek na:

g++ -s main.o mylib.a -lpthread

cili prehazet poradi. 

Je to dano tim, ze (trochu zjednodusene) linker bere soubory zleva doprava, 
nerezolvovane reference prida na seznam nerezolvovanych referenci a pomoci 
symbolu definovanych v danem modulu rezolvuje prislusne reference ze seznamu a 
pak symboly definovane v tomto modulu zapomene.

Takze to nefungovalo proto, ze prvni likoval pthread, tim nerezolvoval zadne 
reference, pak mylib.a, tim taky ne a pak main.o. kde najednou byly 
nerezolvovane symboly. 

V opravene verzi nahaze nezname symboly z main.o do seznamu, nektere najde v 
mylib.a a zbytek v pthread.

 

                 medvidek

--
         ELVIRA - Extended LSD VoiceXML interpreter for Applications
                       http://www.fi.muni.cz/lsd/elvira
  Engine for building dialog applications        Free for noncommercial use

Search the boards