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