jak udelat DSO s prilinkovanou knihovnou staticky?

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Čtvrtek Červen 24 00:37:03 CEST 2004


On Tue, 22 Jun 2004, Václav Ovsík wrote:

> Muze mi prosim nekdo osvetlit (treba odkaz) problematiku duplicitnich
> symbolu v dynamickem linkovani? Jak se s tim zavadec popere?

ld.so si jeden z tech symbolu vybere a da mu prednost. Kecal bych, kdybych
tvrdil, ze takhle z fleku vim, ktery to bude, ale podle chovani nekterych
veci bych soudil, ze obvykle dostane prednost ten v drive nactene
knihovne.

> Jako zajimavou jsem zkusil volbu --retain-symbols-file. Udelal jsem nm
> na XS modul a nechal tam jenom moje symboly. Pak jsem vylinkoval DSO
> skutecne jenom s mimi symboly, uz tam nebylo to OpenSSL smeti, ale
> zazrak se nekonal. Pada to na drzku i tak.

Asi by stalo za pokus zkusit -Bsymbolic, aby daval prednost symbolum
definovanym primo v tom samem DSO pred temi, co jsou definovane jinde.

Take bych misto --retain-symbols-file zkusil --version-script.

> Navic jsem zas narazil na dalsi problem. :-) Kdyz jsem OpenSSL
> prelozil s podporou debugovani a XS taky s -g nasledne slinkoval XS
> pomoci ld, tak to DynaLoader nenatahne, ze mu chybi symbol stat. [...]
> Doted jsem si myslel, ze linkovat muzu plnohodnotne pomoci ld z
> binutils (no mozna by to slo, ale asi by se musel predhodit jeste
> nejakej objekt z gcc-lib).

Musi se to slinkovat s /usr/lib/libc_nonshared.a.
Coz tedy neni treba delat explicitne (ani to neni zadouci), ale staci
pri linkovani pomoci ld pridat -lc (viz obsah /usr/lib/libc.so).

> Reseni, ze prelozim i mod_ssl proti tomu OpenSSL 0.9.8 se mi nelibi,
> 0.9.8 neni stable, abych s tim behal SSL.

Kdyz uz do te konkretni instance Apache strkate nejake DSO s OpenSSL
0.9.8, tak uz asi ani tak moc nevadi, kdyz s ni pojede i ten mod_ssl.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux