Repository 32bit  Forum
Repository 64bit  Wiki

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

[RISOLTO] aggiungere una libreria al linker

Messaggioda roberto67 » gio apr 26, 2012 17:41

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 apr 26, 2012 20:14, modificato 1 volta in totale.
roberto67
Packager
Packager
 
Messaggi: 289
Iscritto il: lun set 14, 2009 17:55
Slackware: 14.1 multilib
Desktop: kde

Re: aggiungere una libreria al linker nella compilazione

Messaggioda targzeta » gio apr 26, 2012 18:51

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6149
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: aggiungere una libreria al linker nella compilazione

Messaggioda roberto67 » gio apr 26, 2012 19:04

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..
roberto67
Packager
Packager
 
Messaggi: 289
Iscritto il: lun set 14, 2009 17:55
Slackware: 14.1 multilib
Desktop: kde

Re: aggiungere una libreria al linker nella compilazione

Messaggioda targzeta » gio apr 26, 2012 19:13

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

Emanuele
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6149
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: aggiungere una libreria al linker nella compilazione

Messaggioda targzeta » gio apr 26, 2012 19:32

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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6149
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: aggiungere una libreria al linker nella compilazione

Messaggioda roberto67 » gio apr 26, 2012 20:04

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: 289
Iscritto il: lun set 14, 2009 17:55
Slackware: 14.1 multilib
Desktop: kde

Re: aggiungere una libreria al linker nella compilazione

Messaggioda roberto67 » gio apr 26, 2012 20:13

è 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 ;)
roberto67
Packager
Packager
 
Messaggi: 289
Iscritto il: lun set 14, 2009 17:55
Slackware: 14.1 multilib
Desktop: kde


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite