sdilena knihovna a gcc s -nostartfiles

Vladimir Michl Vladimir.Michl na seznam.cz
Středa Květen 30 10:15:16 CEST 2001


-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160

Dobry den,

mam takovy problemek a nevim zda reseni ktere jsem nasel je spravne, ci
nema nejake vedlejsi efekty.

Tyka se jiz existujici sdilene knihovny,
ktera pred unloadem potrebuje uvolnit nejake veci. Zatim to knihovna
resi tim zpusobem, ze pomoci atexit si zaregistruje funkci, ktera po
knihovne uklidi. Bohuzel toto reseni vyhovuje, pokud program linkuje
knihovnu pri kompilaci. Pokud se ale knihovna prilinkovava pomoci dlopen,
je problem. V dlopen pisi, ze pokud knihovna exportuje _init a _fini,
jsou tyto vykonany (_init pri dlopen, _fini pri dlclose). Standardne, jsou
ale tyto funkce definovany, a nevim jak se do nich registrovat. Nahodou
jsem prisel na prepinac gcc -nostartfiles, ktery zpusobi, ze funkce _init
a _fini nejsou definovany a tak si je muzu napsat sam. Na malem testovacim
programku jsem si overil, ze _init a _fini jsou volany jak pri dlopen a
spol, tak pokud je knihovna linkovana primo pri prekladu, takze si muzu
uklizeci funkci volat z _fini v obou pripadech a neni treba pouzivat
nejaky atexit.

Otazka zni, zda odstraneni puvodnich _init a _fini ma nejaky vliv na
funkci programu. Kdyz jsem se dival do zdrojaku libc, jsou tam nejake
inicializace a pod. Ale myslim, ze u sdilene knihovny to neni treba,
jelikoz libc je jiz zinicializovana. Je to spravna uvaha, nebo je nejake
jine a lepsi reseni.

Zdravi

Vlada Michl
- -------------------------------------------------------------------------
Vladimir Michl			E-mail:	    Vladimir.Michl na seznam.cz
Czech Republic			Web:	    http://www.penguin.cz/~michlv
				Phone:	    +420 68 5391545
ISO-8859-2 compatibile		Work phone: +420 68 5711219
Key fingerprint: D558 FF4F 468E 544F 7F43  E005 7E7C AD8F 2F69 9DA4
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (GNU/Linux)
Comment: Made with pgp4pine

iQEXAwUBOxSsGH58rY8vaZ2kFAMpYAP7BPLJGYshuLsyD694G9SrdS31to79Dpq7
pNolenXUyGvKZVT2MilAoBrIwLpjLA2qYuhp5hsoMw5VVS8JAkrknhy6XKX9OvCa
6wCTp1nA0pSBHC5xdQmeJixiMiWFo0jp5s5fGUbdz5nCTZRNWiK085luFdTp1hgB
Jl9Rb6hoEk8D/0lo+37/t/Srs5IukRz3UCR8mnbStkxfh4v0FeY2SCC2eDdAklIZ
JWY7AcZS5Ye5LfO++fOs71rInmMIJwZZ8H7wL2Wa+grTBKAq4bZUqwJ0+01thyN/
1+xGceKb787mNV1J/CoQr+moZ8lDiEi9tyi5bgdBtaLrFLtFJzZ1dCD7
=cRZU
-----END PGP SIGNATURE-----



Další informace o konferenci Linux