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