[linux] Linkovanie voci vlastnej kniznici

Ondrej Jombik nepto na pobox.sk
Pondělí Listopad 5 19:09:41 CET 2001


					Maxim, 18:55:53
					05. november 2001 (pondelok)
Ahojte!

	Stretol som sa so zaujimavym spravanim. Moja otazka znie, ci je to
tak normalne, a ked ano, tak preco. No a teraz uz inkriminovana situacia:

	Svoju vlastnu kniznicu kompilujem asi takto (toto je len
vytah doelziteho a podstatneho z 'make'):

...
make[1]: Entering directory `/home/ondrej/prog/libplaton/html'
gcc -Wall -pedantic -I ./    -c -o convert.o convert.c
gcc -Wall -pedantic -I ./    -c -o read.o read.c
g++ -Wall -pedantic -I ./    -c -o tag.o tag.cpp
...

	Cize pouzivam gcc na neobjektove subory a g++ na objektove. Na konci
kompilacie linkujem staticku a dynamicku kniznicu tymito prikazmi:

ar r libplaton.a <zoznam_objektov>
ld  -shared -o libplaton.so <zoznam_objektov>

	No a teraz pointa. Ked chcem voci tejto kniznici cosi zlinkovat, tak
ak pouzijem na kompilaciu napr. kompilator g++ tak nevidim symboly v
suboroch, ktore boli skompilovane gcc. Opacne to plati tiez.

	Aj v ramci tej kniznice sa tie symboly nevidia. Tzn. subor
skompilovany gcc nevidi symboly v suboroch skompilovanych g++ a opacne.
Zaujimave je, ze ten 'ar' a 'ld' zbehne bez chyby a chyba sa prejavi az
vtedy ked chcem voci tej kniznici cosi zlinkovat (ako napr. priklad vyssie).

	Riesenim je na kompilaciu kniznice pouzivat len g++ - toto som
spravil a fungovalo to. Len sa mi to nezda celkom spravne, pretoze naco
kompilovat cosi pomocou g++, ked to nepouziva nic objektove.

	Dakujem za kazde aspon scasti objasnujuce informacie.

	=Nepto=
____________________________________________________________________________
"Be conservative in what you do, be liberal in what you accept from others."
(RFC 793: Transmission control protocol; chapter 2.10. Robustness Principle)





Další informace o konferenci linux