problema di compilazione con le libdvdread

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
sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

problema di compilazione con le libdvdread

Messaggio da sir_alex »

Raga, ho bisogno di una mano: sto facendo un programma che deve fare un parsing del file ifo di un dvd video per poi restituire il numero di titoli e per ciascun titolo il numero di capitoli; ovviamente uso le libdvdread e per il mio programma prendo spunto dal file title_info.c che c'è come esempio in tale pacchetto; peccato che continui a darmi errori di compilazione! Anzi, di linkaggio. Per includere le librerie bisogna passare a gcc -l/usr/lib?
comunque poi ho anche provato a prendere tutti i sorgenti della libreria e title_info.c e cercare di creare un binario unico (con un semplice makefile), però in fase di linkaggio (dopo che creo tutti i file oggetto regolarmente senza errori di compilazione) mi da 

cc -o info md5.o dvd_udf.o dvd_input.o dvd_reader.o ifo_read.o title_info.o
dvd_input.o(.text+0x354): In function `dvdinput_setup':
: undefined reference to `dlopen'
dvd_input.o(.text+0x374): In function `dvdinput_setup':
: undefined reference to `dlsym'
dvd_input.o(.text+0x38c): In function `dvdinput_setup':
: undefined reference to `dlsym'
dvd_input.o(.text+0x3a4): In function `dvdinput_setup':
: undefined reference to `dlsym'
dvd_input.o(.text+0x3bc): In function `dvdinput_setup':
: undefined reference to `dlsym'
dvd_input.o(.text+0x3d4): In function `dvdinput_setup':
: undefined reference to `dlsym'
dvd_input.o(.text+0x3ec): more undefined references to `dlsym' follow
dvd_input.o(.text+0x43e): In function `dvdinput_setup':
: undefined reference to `dlclose'
dvd_input.o(.text+0x4a3): In function `dvdinput_setup':
: undefined reference to `dlclose'
collect2: ld returned 1 exit status
make: *** [info] Error 1

sono andato a cercare nei file include (in /usr/include) dove fossero le funzioni che non riesce a trovare, ho scoperto che sono nel file dlfcn.h che non era precedentemente incluso in dvd_input.c; l'ho incluso io pensando che così avrebbe trovato le funzioni ma continua a dare lo stesso output. Idee?

Diciamo che io so per certo che, dato il mio file .c, io includo le librerie con

#include <dvdread/dvd_reader.h>
#include <dvdread/ifo_types.h>
#include <dvdread/ifo_read.h>
etc

poi uso le varie funzioni e al gcc scrivo

gcc file.c -o file

a questo dovrei aggiungere -I/usr/include? Se non lo metto lui compila senza errori, quindi presumo non serva; e poi per le librerie? -l/usr/lib? Ma allora

gcc prova.c -l/usr/lib -o prova
/usr/bin/ld: cannot find -l/usr/lib
collect2: ld returned 1 exit status

Grazie!

P.S.: perchè nei corsi di informatica (universitari) ti insegnano ad usare il c ma non c'è pericolo che ti spieghino come compilare progetti con più files sorgente???

P.S.S.: ah, pkg-config non funzia perchè le libdvdread che ho installato da sorgente non hanno alcun file .pc (dato che mi era già  capitato di usare pkg-config una volta con le libxml2, e la compilazione all'epoca era andata liscia alla grande...)

Avatar utente
useless
Staff
Staff
Messaggi: 3896
Iscritto il: dom 12 ott 2003, 0:00
Località: A place where the streets have no name
Contatta:

Messaggio da useless »

non -l/usr/lib, bensì -ldvdread!

sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

Messaggio da sir_alex »

Bella! Grazie, ora va tutto! :lol:

Rispondi