Pagina 1 di 1
[RISOLTO] aggiungere una libreria al linker
Inviato: gio 26 apr 2012, 18:41
da roberto67
Sto compilando kino, usando lo slackbuild di SBo, ma da ieri mi imbatto in problemi di compilazione
Codice: Seleziona tutto
/usr/lib64/libuuid.so /usr/lib64/libICE.so /usr/lib64/libX11.so /usr/lib64/libxcb.so /usr/lib64/libXau.so /usr/lib64/libXdmcp.so -ldl -pthread -Wl,-rpath -Wl,/usr/lib64 -Wl,-rpath -Wl,/usr/lib64/../lib64 -Wl,-rpath -Wl,/usr/lib64 -Wl,-rpath -Wl,/usr/lib64/../lib64
/usr/lib64/gcc/x86_64-slackware-linux/4.7.0/../../../../x86_64-slackware-linux/bin/ld: frame.o: undefined reference to symbol 'avcodec_alloc_frame@@LIBAVCODEC_52'
/usr/lib64/gcc/x86_64-slackware-linux/4.7.0/../../../../x86_64-slackware-linux/bin/ld: note: 'avcodec_alloc_frame@@LIBAVCODEC_52' is defined in DSO /usr/lib64/libavcodec.so.52 so try adding it to the linker command line
/usr/lib64/libavcodec.so.52: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status
make[3]: *** [kino] Errore 1
make[3]: Leaving directory `/tmp/SBo/kino-1.3.4/src'
make[2]: *** [all-recursive] Errore 1
make[2]: Leaving directory `/tmp/SBo/kino-1.3.4/src'
make[1]: *** [all-recursive] Errore 1
make[1]: Leaving directory `/tmp/SBo/kino-1.3.4'
make: *** [all] Errore 2
libavcodec è installato, ma come faccio ad aggiungere la libreria al linker?
Re: aggiungere una libreria al linker nella compilazione
Inviato: gio 26 apr 2012, 19:51
da targzeta
Se ha un configure, devi semplicemente impostare LDFLAGS come '-llibavcodec' e dovrebbe funzionare. Purtroppo però non te lo posso confermare perché non ho il mio PC. Vado a memoria ma la soluzione dovrebbe essere quella.
Emanuele
Re: aggiungere una libreria al linker nella compilazione
Inviato: gio 26 apr 2012, 20:04
da roberto67
spina ha scritto:Se ha un configure, devi semplicemente impostare LDFLAGS come '-llibavcodec' e dovrebbe funzionare. Purtroppo però non te lo posso confermare perché non ho il mio PC. Vado a memoria ma la soluzione dovrebbe essere quella.
Emanuele
ora sto configurando così
Codice: Seleziona tutto
CFLAGS="$SLKCFLAGS" \
LDFLAGS='-Llibavcodec' \
./configure \
--prefix=/usr \
--libdir=/usr/lib$LIBDIRSUFFIX \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--disable-static \
--enable-quicktime \
--disable-local-ffmpeg
e ottengo questo
Codice: Seleziona tutto
iro -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0 -lXv -lXext -ldl -lpthread -lrom1394 -lavc1394 -lraw1394 -lm -lSM -lICE -lX11
../../libtool: line 4992: cd: libavcodec: No such file or directory
libtool: link: cannot determine absolute directory name of `libavcodec'
make[4]: *** [libtimfx.la] Errore 1
make[4]: Leaving directory `/tmp/SBo/kino-1.3.4/src/timfx'
make[3]: *** [all-recursive] Errore 1
make[3]: Leaving directory `/tmp/SBo/kino-1.3.4/src/timfx'
make[2]: *** [all-recursive] Errore 1
make[2]: Leaving directory `/tmp/SBo/kino-1.3.4/src'
make[1]: *** [all-recursive] Errore 1
make[1]: Leaving directory `/tmp/SBo/kino-1.3.4'
make: *** [all] Errore 2
non dovrei passare il nome della directory? il fatto è che sta già in /usr/lib64..
Re: aggiungere una libreria al linker nella compilazione
Inviato: gio 26 apr 2012, 20:13
da targzeta
In teoria è '-l' e non '-L', guarda il man di ld.
Emanuele
Re: aggiungere una libreria al linker nella compilazione
Inviato: gio 26 apr 2012, 20:32
da targzeta
roberto67 ha scritto:non dovrei passare il nome della directory? il fatto è che sta già in /usr/lib64..
Non avevo letto questo pezzetto. L'opzione -L indica un 'search path' mentre l'opzione '-l' indica proprio una libreria. Tu devi passare '-l'.
Il problema è che il 'configure' non ha linkato il programma con quella libreria e quindi 'ld' non la trova. Anche se questa si trova in '/usr/lib64'. Cioé, la libreria c'è, però il configure non ha detto a ld di linkarla con il programma. Spero di essermi spiegato bene.
Emanuele
Re: aggiungere una libreria al linker nella compilazione
Inviato: gio 26 apr 2012, 21:04
da roberto67
spina ha scritto:Se ha un configure, devi semplicemente impostare LDFLAGS come '-llibavcodec' e dovrebbe funzionare. Purtroppo però non te lo posso confermare perché non ho il mio PC. Vado a memoria ma la soluzione dovrebbe essere quella.
Emanuele
si chiarissimo, è quello che mi era sembrato di capire dalle ricerche che ho fatto. Però non riesco a fargliela linkare, nè come -llibavcodec, nè come -llibavcodec.so, .so.52 e nemmeno con il path assoluto /usr/lib64/libavcodec.so.52 ecc.
Codice: Seleziona tutto
/usr/lib64/gcc/x86_64-slackware-linux/4.7.0/../../../../x86_64-slackware-linux/bin/ld: cannot find -l/usr/lib64/libavcodec.so.
52
collect2: error: ld returned 1 exit status
continuo a leggermi il man di ld alla ricerca della sintassi giusta. grazie emanuele

Re: aggiungere una libreria al linker nella compilazione
Inviato: gio 26 apr 2012, 21:13
da roberto67
è andato con
ora ci sono altr librerie che non trova, ma so come fare
grazie per la pazienza, Emanuele
