Pytanie do mistrzów ldopen - Ac vs Th i błąd: cannot dynamically load executable

Mateusz Korniak mateusz w ant.gliwice.pl
Śro, 13 Sie 2008, 11:20:05 CEST


Mamy ten sam kod - glusterfs z HEAD.
W Ac, w wyniku budowania powstaje szereg "modułów" (np client.so) 
które mają niezdefiniowane symbole (np "gf_log_loglevel") które z kolei 
zdefiniowane są w budowany razem z 
pakietem /usr/lib/glusterfs/1.3.10/xlator/protocol/client.so [1]
Proces budowania jak i sam glusterfs działają w najlepsze.

W Th proces budowania przy linkowaniu krzyczy o braku symboli (m.in. 
gf_log_loglevel ) przy próbie zkonsolidowania modułu (client.so).
Na to pomaga dodanie
+client_so_LDADD = $(top_builddir)/libglusterfs/src/libglusterfs.la
Jednak powstały w wyniku tak poprawionego budowania moduł jest w czyms "inny" 
i nie pozwala się załadować analogicznie jak to się dzieje w Ac [2], z 
błędem:
client.so: cannot dynamically load executable
Nie jestem specem od linkowania, a zależy mi na glusterfs w Th, ma ktoś może 
pomysł co sprawdzić dalej ?

Z góry dziękie za wszalką pomoc, sugestie i przemyślenia !


1: (ladownie modułów w Ac - po załadowaniu libglusterfs.so.0, client.so się 
też ładuje)
>>> import dl
>>> 
dl.open("/usr/lib/glusterfs/1.3.10/xlator/protocol/client.so",dl.RTLD_GLOBAL)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
dl.error: /usr/lib/glusterfs/1.3.10/xlator/protocol/client.so: undefined 
symbol: gf_log_loglevel
>>> dl.open("/usr/lib/libglusterfs.so.0",dl.RTLD_GLOBAL)
<dl.dl object at 0xf7c68040>
>>> 
dl.open("/usr/lib/glusterfs/1.3.10/xlator/protocol/client.so",dl.RTLD_GLOBAL)
<dl.dl object at 0xf7c68050>


[2] (ładowanie modułów w Th - ciągle ten sam błąd)
>>> import dl
>>> 
dl.open("/usr/lib/glusterfs/1.3.10/xlator/protocol/client.so",dl.RTLD_GLOBAL)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
dl.error: /usr/lib/glusterfs/1.3.10/xlator/protocol/client.so: cannot 
dynamically load executable
>>> dl.open("/usr/lib/libglusterfs.so.0",dl.RTLD_GLOBAL)
<dl.dl object at 0xb7cbe050>
>>> 
dl.open("/usr/lib/glusterfs/1.3.10/xlator/protocol/client.so",dl.RTLD_GLOBAL)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
dl.error: /usr/lib/glusterfs/1.3.10/xlator/protocol/client.so: cannot 
dynamically load executable


[3]: Efetkty budwoania w Ac:
[matkor w appserver ~]$ ldd /usr/lib/glusterfs/1.3.10/xlator/protocol/client.so
        linux-gate.so.1 =>  (0xffffe000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0xf7f45000)
        libc.so.6 => /lib/tls/libc.so.6 (0xf7e2b000)
        /lib/ld-linux.so.2 (0x56555000)
[matkor w appserver ~]$ ldd /usr/lib/libglusterfs.so.0
        linux-gate.so.1 =>  (0xffffe000)
        libdl.so.2 => /lib/libdl.so.2 (0xf7fa2000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0xf7f90000)
        libc.so.6 => /lib/tls/libc.so.6 (0xf7e76000)
        /lib/ld-linux.so.2 (0x56555000)


[4]: Efekty budowania w Th:
[matkor w db ~]$ ldd /usr/lib/glusterfs/1.3.10/xlator/protocol/client.so
        linux-gate.so.1 =>  (0xb7f6a000)
        libglusterfs.so.0 => /usr/lib/libglusterfs.so.0 (0xb7f43000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7f2c000)
        libc.so.6 => /lib/libc.so.6 (0xb7dec000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7de8000)
        /lib/ld-linux.so.2 (0xb7f6b000)
[matkor w db ~]$ ldd /usr/lib/libglusterfs.so.0
        linux-gate.so.1 =>  (0xb804a000)
        libdl.so.2 => /lib/libdl.so.2 (0xb801f000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb8008000)
        libc.so.6 => /lib/libc.so.6 (0xb7ec8000)
        /lib/ld-linux.so.2 (0xb804b000)


-- 
Mateusz Korniak


Więcej informacji o liście dyskusyjnej pld-devel-pl