Pagina 1 di 1

undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 14:25
da ZeroUno
Sto compilando libproxy 0.4.0 (dipendenza di amsn) per slackware-current con kde 4.4.1
Al momento non ho una current pulita (cioè con kde 4.3.5), mentre la 13.0 non compila perchè libproxy vuole cmake 2.8 mentre la 13.0 ha la 2.6

Lancio "cmake ." e poi "make"
Ad un certo punto però si blocca con il messaggio:

Codice: Seleziona tutto

libmodman.so.0: undefined reference to `__dlclose'
libmodman.so.0: undefined reference to `__dlsym'
libmodman.so.0: undefined reference to `__dlerror'
libmodman.so.0: undefined reference to `__dlopen'
collect2: ld returned 1 exit status
Ho visto che il comando che fallisce è:

Codice: Seleziona tutto

cd libmodman && /usr/bin/c++   -g -Wall -Werror -fvisibility=hidden    CMakeFiles/builtin.dir/test/builtin.cpp.o CMakeFiles/builtin.dir/libmodman/test/builtin_one.cpp.o  -o builtin -rdynamic libmodman.so.0 -ldl -Wl,-rpath,/root/libproxy-0.4.0/libmodman

Da un "strace -f" scopro che cerca, invano, libdl.so
effettivamente non so perchè in /lib non è stato creato il link "libdl.so -> libdl.so.2"
Poco male.. lo creo e aggiungo -L/lib alla riga, ma non cambia niente. Il messaggio è lo stesso, nonostante strace -f mi dice che libdl.so ora l'ha trovato.
libdl è 2.11.1 dalle glibc-solibs della current

Che cosa manca?


Ciao
01

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 15:06
da masalapianta
-ldl

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 15:35
da ZeroUno
masalapianta ha scritto:-ldl
guarda bene che già c'è.

piuttosto mi chiedo che versione di libdl vuole, per nei makevile, cmakefile ecc non sono riuscito a vederlo.

Ciao
01

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 15:41
da conraid
in una current pulita mi si blocca per -lmozjs
ho solo seamonkey, e sembrerebbe tutto ok, solo che vedo che dice che il comando seamonkey-js non c'è, in effetti c'è solo il file per pkgconfig, ma vedo che anche per debian è così per esempio, anche se in debian c'è libmozjs presa da xulrunner

per glibc non da errori

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 15:45
da conraid
ZeroUno ha scritto:
masalapianta ha scritto:-ldl
guarda bene che già c'è.

piuttosto mi chiedo che versione di libdl vuole, per nei makevile, cmakefile ecc non sono riuscito a vederlo.

Ciao
01

comunque libproxy.so la crea

Codice: Seleziona tutto

# ldd libproxy.so.1.0.0
        linux-gate.so.1 =>  (0xffffe000)
        libmodman.so.0.0.0 => /tmp/pkg/libproxy-0.4.0/libmodman/libmodman.so.0.0.0 (0xb772e000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb76e9000)
        libdl.so.2 => /lib/libdl.so.2 (0xb76e5000)
        libmozjs.so => /usr/lib/seamonkey-2.0.3/libmozjs.so (0xb75ee000)
        libplds4.so => /usr/lib/seamonkey-2.0.3/libplds4.so (0xb75ea000)
        libplc4.so => /usr/lib/seamonkey-2.0.3/libplc4.so (0xb75e6000)
        libnspr4.so => /usr/lib/seamonkey-2.0.3/libnspr4.so (0xb75b3000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb74c6000)
        libm.so.6 => /lib/libm.so.6 (0xb74a0000)
        libc.so.6 => /lib/libc.so.6 (0xb7341000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0xb7323000)
        /lib/ld-linux.so.2 (0xb7763000)

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 15:49
da ZeroUno
ok. metto in piedi una current e vedo.

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 20:04
da ZeroUno
chissà perchè non veniva creato il link /usr/lib/libdl.so -> /lib/libdl.so.2
e quello che avevo creato io era in /lib mentre veniva cercato in /usr/lib

Ora devo risolvere il problema di mozjs (odio cmake).

lanciando "make VERBOSE=1" noto che fallisce

Codice: Seleziona tutto

cd utils && /usr/bin/gcc     CMakeFiles/proxy.dir/proxy.c.o  -o proxy -rdynamic ../lib/libproxy.so.1.0.0 ../libmodman/libmodman.so.0 -lm -lpthread -lmozjs -lplds4 -lplc4 -lnspr4 -lpthread -lmozjs -lplds4 -lplc4 -lnspr4 -ldl -Wl,-rpath,/root/Downloads/amsnbuild/libproxy/libproxy-0.4.0/lib:/root/Downloads/amsnbuild/libproxy/libproxy-0.4.0/libmodman:
aggiungendo a mano "-L/usr/lib/seamonkey" invece va a buon fine.

Ciao
01

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 21:35
da ZeroUno
la cosa curiosa è che il -L/usr/lib/seamonkey lo mette in automatico su tanti gcc (find -name link.txt) mentre non lo mette lì dove serve.

Ciao
01

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 21:43
da conraid
ZeroUno ha scritto:la cosa curiosa è che il -L/usr/lib/seamonkey lo mette in automatico su tanti gcc (find -name link.txt) mentre non lo mette lì dove serve.
infatti alcune librerie le crea con i vari flag corretti, tranne quella interessata
vedo che le altre distribuzioni però hanno ancora libproxy 2.3, chissà se il motivo è solamente cmake
tra l'altro alcune compilano con --without-mozjs

ma a cosa serve a amsn? io lo compilo tranquillamente senza
ad usare il proxy?

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 22:00
da ZeroUno
conraid ha scritto:tra l'altro alcune compilano con --without-mozjs
beh, con cmake non saprei come fare.

comunque ho scaricato la versione current di libproxy, ma le cose non cambiano.
mi sa che mi devo vedere bene cmake.

ma a cosa serve a amsn? io lo compilo tranquillamente senza
ad usare il proxy?
a detta degli slack-required di slacky è una dipendenza di libsoup.

ecco i dettagli delle dipendenze e l'ordine di compilazione:
tls => none.
gst-python => none
libproxy => none
orbit2 => none
gconf => orbit2
libsoup => gconf,libproxy
gssdp => libsoup
gupnp => gssdp
gupnp-igd => gupnp
libnice => gupnp-igd
farsight2 => libnice,gst-python
amsn => suggested before compile: FARSIGHT2 and GSTREAMER (per l'audio),GUPNP-IGD; suggested after compile: TLS

Ciao
01

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 22:05
da conraid
capito, io compilo senza upnp, mi sta sulle palle quella tecnologia :-)

Re: undefined reference to `__dlclose'

Inviato: lun 15 mar 2010, 22:14
da ZeroUno
conraid ha scritto:capito, io compilo senza upnp, mi sta sulle palle quella tecnologia :-)
io semplicemente (di solito) compilo con gli slackbuild di slacky



comunque vedendomi un po' di struttura del cmake, se cambio dentro CMakeLists.txt la variabile ${CMAKE_CXX_FLAGS}, questa viene riportata su tutti i link.txt, ma non su quello incriminato. Il che significa che oltre alle librerie mozjs non ci va nemmeno:
-g -Wall -Werror -fvisibility=hidden -Os

Ciao
01