[RISOLTO] aggiungere una libreria al linker

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
roberto67
Packager
Packager
Messaggi: 361
Iscritto il: lun 14 set 2009, 18:55
Slackware: 15.0 multilib
Desktop: plasma 5
Contatta:

[RISOLTO] aggiungere una libreria al linker

Messaggio 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?
Ultima modifica di roberto67 il gio 26 apr 2012, 21:14, modificato 1 volta in totale.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: aggiungere una libreria al linker nella compilazione

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

roberto67
Packager
Packager
Messaggi: 361
Iscritto il: lun 14 set 2009, 18:55
Slackware: 15.0 multilib
Desktop: plasma 5
Contatta:

Re: aggiungere una libreria al linker nella compilazione

Messaggio 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..

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: aggiungere una libreria al linker nella compilazione

Messaggio da targzeta »

In teoria è '-l' e non '-L', guarda il man di ld.

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: aggiungere una libreria al linker nella compilazione

Messaggio 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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

roberto67
Packager
Packager
Messaggi: 361
Iscritto il: lun 14 set 2009, 18:55
Slackware: 15.0 multilib
Desktop: plasma 5
Contatta:

Re: aggiungere una libreria al linker nella compilazione

Messaggio 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 :-)

roberto67
Packager
Packager
Messaggi: 361
Iscritto il: lun 14 set 2009, 18:55
Slackware: 15.0 multilib
Desktop: plasma 5
Contatta:

Re: aggiungere una libreria al linker nella compilazione

Messaggio da roberto67 »

è andato con

Codice: Seleziona tutto

LDFLAGS='-l:libavcodec.so'
ora ci sono altr librerie che non trova, ma so come fare

grazie per la pazienza, Emanuele ;)

Rispondi