linkowanie statyczne a dynamiczne

Paweł Kołodziej pawelk w pld.org.pl
Śro, 20 Wrz 2000, 16:05:05 CEST


Witam.
Mam mały problemik z linkowaniem. Mianowicie, gdy skompiluje program
dynamicznie, to wywala się na instalacji pierwszego pakietu. Oto co mowi
na ten temat gdb:
#0  0x0 in ?? ()
#1  0x4050487a in __db_err () from /lib/libdb.so.3
#2  0x404fdbad in db_open () from /lib/libdb.so.3
#3  0x40018a3a in _nss_db_getgrgid_r () from /lib/libnss_db.so.2
#4  0x40018c3b in _nss_db_endpwent () from /lib/libnss_db.so.2
#5  0x40018ed4 in _nss_db_getpwnam_r () from /lib/libnss_db.so.2
#6  0x4020932f in getpwnam_r () from /lib/libc.so.6
#7  0x40208c21 in getpwnam () from /lib/libc.so.6
#8  0x40035874 in installBinaryPackage () from /usr/lib/librpm.so.0
#9  0x4005c359 in rpmRunTransactions () from /usr/lib/librpm.so.0
#10 0x8052d2f in rpmpkgs_install (pkgs=0x805e688, flags=0) at rpmmen.c:457
#11 0x8051aeb in rpmpldi_install (flags=0) at rpmpldi.c:19
#12 0x804b958 in rpmmenUI_run (src=0x80587f0 "", dest=0x805f6f0 "/",
    stdoutf=0x0) at rpmmenUI.c:375
#13 0x804ad13 in main (ac=5, av=0xbffffbd4) at rpmmenExample.c:162
#14 0x401a1e06 in __libc_start_main () from /lib/libc.so.6

Jak widac wywala sie probojac otworzyc /var/db/[costam]. Te pliki sa 
tworzone programem makedb ktory jest zlinkowany z    
libdb.so.3 => /lib/libdb.so.3 (0x4001c000). Czyli niby w pozadku, a jednak
sie wywala. Domyslam sie, ze jest to jakis konflikt symboli miedzy db2 (z
nigo jest libdb.so.3) i db3 (wymagane prez librpm). Oto ldd:
        librpm.so.0 => /usr/lib/librpm.so.0 (0x4001c000)
        libbz2.so.1 => /usr/lib/libbz2.so.1 (0x4006d000)
        libdb-3.1.so => /lib/libdb-3.1.so (0x4007d000)
        libz.so.1 => /usr/lib/libz.so.1 (0x400f4000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x40102000)
        libpopt.so.0 => /usr/lib/libpopt.so.0 (0x40112000)
        libnewt.so.0.50 => /usr/lib/libnewt.so.0.50 (0x40118000)
        libslang.so.1 => /usr/lib/libslang.so.1 (0x40126000)
        libc.so.6 => /lib/libc.so.6 (0x40189000)
        libm.so.6 => /lib/libm.so.6 (0x4026d000)
        libdl.so.2 => /lib/libdl.so.2 (0x4028b000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

Wszystko bylo by nawet zrozumiale, gdynby nie fakt, ze zlinkowanie
statyczne powoduje ze program działa. 

Jesli ktos z tej listy[1] ma jakis pomysl dlaczego tak sie dzieje, to
prosze o odpowiedz.


[1] Czyli Paweł Gajda (no chyba że jest tu ktoś jeszcze).

-- 
Paweł Kołodziej 
pawelk w pld.org.pl 



Więcej informacji o liście dyskusyjnej pld-installer