Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Tech
 
[COMPILAZIONE] Come compilare librerie...
Clicca QUI per vedere il messaggio nel forum
DarkGod
Ciao!
Sto cercando di compilare VLC (VideoLAN) ma ho un problema.
Sto usando il compilatore gcc 3.4.1. e dovrei installare tutte le librerie disponibili.

Purtroppo però acune di esse (credo matroska e eblm) sono state compilate con una vecchia versione di gcc incompatibile con la mia, e questo genera un errore durante l'esecuzione del "make".

Vorrei quindi ricompilare quelle librerie con la mia versione di gcc per eliminare i problemi di incompatibilità... ma come fare?
Non ho mai compilato delle librerie, qualcuno mi potrebbe indicare la strada giusta?

Grazie mille... :D

khelidan
Che distro usi?Perche compili?Hai installato il vecchio compilatore?Potresti eventualmente compilare vlc con quello vecchio!

DarkGod
Originally posted by khelidan
Che distro usi?Perche compili?Hai installato il vecchio compilatore?Potresti eventualmente compilare vlc con quello vecchio!


Dunque dunque...
Sì, è vero, non sono stato molto chiaro, cmq cercherò di spiegarer tutto.

Ho bisogno di compilarlo perchè poi dovrò modificare i sorgenti.

In realtà però devo compilare VLC sotto Windows (XP), non Linux! :P
Per far ciò sto utilizzando (come raccomandato nella documentazione di VLC) l'ambiente Cygwin, che emula comandi e applicazioni Linux all'interno di Windows.

Ho già provato a usare una versione più vecchia di gcc, e il programma ha compilato... però non funziona correttamente (non posso cambiare interfaccia, non funzionano le opzioni, ecc...)
Non so se i problemi dipendano da quello oppure no, ma in ogni caso devo utilizzare gcc 3.4.4 fornito con Cygwin. Poi se persistono ancora cercherò di risolverli successivamente.

Dato che non ho mai compilato librerie, sto provando a farlo "a intuito" ma finora non ho avuto nessun rusultato, nè trovato documentazione adeguata...

Se avete bisogno di altri dati fatemi sapere...
nel frattempo grazie ancora....

DarkGod
Questi sono gli errori che mi da mentre eseguo il 'make':

code:
Info: resolving libebml::EbmlVoid::ClassInfos by linking to __imp___ZN7libebml8EbmlVoid10ClassInfosE (auto-import) Info: resolving libebml::EbmlHead::ClassInfos by linking to __imp___ZN7libebml8EbmlHead10ClassInfosE (auto-import) Info: resolving libebml::EbmlHead_Context by linking to __imp___ZN7libebml16EbmlHead_ContextE (auto-import) Info: resolving vtable for libebml::EbmlDateby linking to __imp___ZTVN7libebml8EbmlDateE (auto-import) Info: resolving vtable for libebml::EbmlUnicodeStringby linking to __imp___ZTVN7libebml17EbmlUnicodeStringE (auto-import) Info: resolving vtable for libebml::EbmlElementby linking to __imp___ZTVN7libebml11EbmlElementE (auto-import) Info: resolving vtable for libebml::EbmlUIntegerby linking to __imp___ZTVN7libebml12EbmlUIntegerE (auto-import) Info: resolving vtable for libebml::EbmlFloatby linking to __imp___ZTVN7libebml9EbmlFloatE (auto-import) Info: resolving vtable for libebml::EbmlStringby linking to __imp___ZTVN7libebml10EbmlStringE (auto-import) Info: resolving __ZTVN7l./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x690e): undefined reference to `libmatroska::KaxClusterSilentTrackNumber::ClassIn fos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x6b13): undefined reference to `libmatroska::KaxClusterSilentTracks::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0xf243): undefined reference to `libmatroska::KaxSegmentFamily::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x12d1e): undefined reference to `libmatroska::KaxSegmentFamily::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x12f2b): undefined reference to `libmatroska::KaxChapterTranslate::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x13035): undefined reference to `libmatroska::KaxChapterTranslateEditionUID::Class Infos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x130d1): undefined reference to `libmatroska::KaxChapterTranslateCodec::ClassInfos ' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x1318c): undefined reference to `libmatroska::KaxChapterTranslateID::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x1346d): undefined reference to `libmatroska::KaxChapterProcessTime::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x134eb): undefined reference to `libmatroska::KaxChapterProcessData::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x142e8): undefined reference to `libmatroska::KaxChapterProcess::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x143b4): undefined reference to `libmatroska::KaxChapterProcessCodecID::ClassInfos ' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x14454): undefined reference to `libmatroska::KaxChapterProcessPrivate::ClassInfos ' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x14a15): undefined reference to `libmatroska::KaxChapterProcessCommand::ClassInfos ' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(.text+0x15569): undefined reference to `libmatroska::KaxEditionFlagOrdered::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska24KaxChapterProcessPrivate7G enericEv[libmatroska::KaxChapterProcessPrivate::Ge neric() const]+0x1): undefined reference to `libmatroska::KaxChapterProcessPrivate::ClassInfos ' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska24KaxChapterProcessPrivatecv RKN7libebml6EbmlIdEEv[libmatroska::KaxChapterProce ssPrivate::operator libebml::EbmlId const&() const]+0x1): undefined reference to `libmatroska::KaxChapterProcessPrivate::ClassInfos ' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska21KaxChapterProcessData7Gene ricEv[libmatroska::KaxChapterProcessData::Generic( ) const]+0x1): undefined reference to `libmatroska::KaxChapterProcessData::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska21KaxChapterProcessDatacvRKN 7libebml6EbmlIdEEv[libmatroska::KaxChapterProcessD ata::operator libebml::EbmlId const&() const]+0x1): undefined reference to `libmatroska::KaxChapterProcessData::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska16KaxSegmentFamily7GenericEv [libmatroska::KaxSegmentFamily::Generic() const]+0x1): undefined reference to `libmatroska::KaxSegmentFamily::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska16KaxSegmentFamilycvRKN7libe bml6EbmlIdEEv[libmatroska::KaxSegmentFamily::opera tor libebml::EbmlId const&() const]+0x1): undefined reference to `libmatroska::KaxSegmentFamily::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska21KaxChapterTranslateID7Gene ricEv[libmatroska::KaxChapterTranslateID::Generic( ) const]+0x1): undefined reference to `libmatroska::KaxChapterTranslateID::ClassInfos' ./modules/demux/libmkv.a(libmkv_a-mkv.o):mkv.cpp:(. text$_ZNK11libmatroska21KaxChapterTranslateIDcvRKN 7libebml6EbmlIdEEv[libmatroska::KaxChapterTranslat eID::operator libebml::EbmlId const&() const]+0x1): undefined reference to `libmatroska::KaxChapterTranslateID::ClassInfos' /usr/win32/lib/libmatroska.a(KaxInfoData.o):KaxInfoData.cpp:(. text$_ZN7libebml11EbmlElementD2Ev[libebml::EbmlEle ment::~EbmlElement()]+0x30): undefined reference to `___assert' /usr/win32/lib/libmatroska.a(KaxCues.o):KaxCues.cpp:(.text+0x26d): undefined reference to `___assert' /usr/win32/lib/libmatroska.a(KaxCues.o):KaxCues.cpp:(.text+0x39f): undefined reference to `___assert' /usr/win32/lib/libmatroska.a(KaxCues.o):KaxCues.cpp:(.text+0x4d1): undefined reference to `___assert' /usr/win32/lib/libmatroska.a(KaxCues.o):KaxCues.cpp:(. text$_ZNK11libmatroska7KaxCues19GlobalTimecodeScal eEv[libmatroska::KaxCues::GlobalTimecodeScale() const]+0x2c): undefined reference to `___assert' /usr/win32/lib/libmatroska.a(KaxCuesData.o):KaxCuesData.cpp:(.text+0x1d2): more undefined references to `___assert' follow ibebml12EbmlSIntegerE by linking to __imp___ZTVN7libebml12EbmlSIntegerE (auto-import) collect2: ld returned 1 exit status make[2]: *** [vlc.exe] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2

Renaulto
Non puoi compilarti gli rpm?

DarkGod
Originally posted by Renaulto
Non puoi compilarti gli rpm?


Non penso.
Il fatto è che è per un progetto di tesi, e dopo averlo compilato devo effettuare delle modifiche al codice sorgente.
Devo proprio ricompilare quelle 2 librerie...

(anche perchè ricordo che in realtà sono sotto Windows XP)

DarkGod
Scusate, ma IN GENERALE, per ricompilare delle librerie sotto Linux come si fa? Qual'è il procedimento da seguire?

Io ho scaricato i sorgenti, ho dato il "make" (che credo sia andato a buon fine) e mi ha creato un file.
Ma a questo punto non so come procedere...

Devo spostare quel file nella cartella delle librerie del programma?
E tutti gli header (*.h) ?

O__o

Walter
Forse questa pagina può aiutarti: http://www.bo.cnr.it/corsi-di-infor...xLibraries.html

DarkGod
Originally posted by Walter
Forse questa pagina può aiutarti: http://www.bo.cnr.it/corsi-di-infor...xLibraries.html


Grazie, domani me la leggo :)

Viry
Dopo il make, consiglio un "make install" eseguito da utente root (questo comando installa i file appena compilati)

LazerPhEa
e un bel ldconfig.

DarkGod
Originally posted by Viry
Dopo il make, consiglio un "make install" eseguito da utente root (questo comando installa i file appena compilati)


Sto provando a compilarle... (sia ebml che matroska).
Il comando "make" mi genera correttamente il file ".a".
Il comando "make install" non funziona, in nessuna delle due librerie, mi dice:
code:
make: *** No rule to make target 'install'. Stop.


Ho sostituito i due nuovi file .a alle vecchie versioni, ma non sembra avere avuto alcun effetto...

DarkGod
Originally posted by Viry
Dopo il make, consiglio un "make install" eseguito da utente root (questo comando installa i file appena compilati)


Non posso divenatre root, il comando "su" per cambiare utente sembra non essere riconosciuto da Cygwin..

In ogni caso il make genera solo la libreria .a, ma nessn file "install".

Nemmeno "ldconfig" funziona.

Alf
Originally posted by DarkGod
Non posso divenatre root, il comando "su" per cambiare utente sembra non essere riconosciuto da Cygwin..

In ogni caso il make genera solo la libreria .a, ma nessn file "install".

Nemmeno "ldconfig" funziona.


Il make install non e' un comando diverso da make.

make puo' avere un "target"

Se esiste il file Makefile all'interno ci sono tutte le "regole" che il make segue per compilare.


Di solito c'e' anche l'etichetta "install" che a seconda dei casi sposta i binari creati, crea link, insomma fa un po' di cose per "installare" quello che hai compilato.

Comunque puoi' personalizzarti il tuo "make" scrivendo quel che vuoi nel Makefile.

Ah spesso c'e' il file configure che prendendo i dati dal sistema ti crea un file Makefile ad hoc


Ma in realta' tutto questo, a parte "cultura" personale, non credo ti serva molto per risolvere il problema :)

DarkGod
Originally posted by Alf
Il make install non e' un comando diverso da make.

make puo' avere un "target"

Se esiste il file Makefile all'interno ci sono tutte le "regole" che il make segue per compilare.


Di solito c'e' anche l'etichetta "install" che a seconda dei casi sposta i binari creati, crea link, insomma fa un po' di cose per "installare" quello che hai compilato.

Comunque puoi' personalizzarti il tuo "make" scrivendo quel che vuoi nel Makefile.

Ah spesso c'e' il file configure che prendendo i dati dal sistema ti crea un file Makefile ad hoc


Ma in realta' tutto questo, a parte "cultura" personale, non credo ti serva molto per risolvere il problema :)



Sì, ok... questo lo sapevo ;):P
Il fatto è che, nei sorgenti delle librerie che ho scaricato, non c'è nessun configure e nessun install, ma solo un Makefile.
Quindi l'unica cosa che posso fare è lanciare il make (senza install) che mi compila i sorgetti .cpp e mi crea la libreria .a .
E fin qui ci sono.
Ma per utilizzare queste librerie al posto di quelle che avevo già incluse (e che non vanno bene perchè sono state compilate con una versione vecchia del gcc e g++), come devo fare?
Io ho semplicemente sostuituito i vecchi file .a con quelli nuovi, ma non sembra essere cambiato nulla.... :(

Alf
Originally posted by DarkGod
Sì, ok... questo lo sapevo ;):P
Il fatto è che, nei sorgenti delle librerie che ho scaricato, non c'è nessun configure e nessun install, ma solo un Makefile.
Quindi l'unica cosa che posso fare è lanciare il make (senza install) che mi compila i sorgetti .cpp e mi crea la libreria .a .
E fin qui ci sono.
Ma per utilizzare queste librerie al posto di quelle che avevo già incluse (e che non vanno bene perchè sono state compilate con una versione vecchia del gcc e g++), come devo fare?
Io ho semplicemente sostuituito i vecchi file .a con quelli nuovi, ma non sembra essere cambiato nulla.... :(


Cioe' li hai sostituiti e poi hai ricompilato tutto il vlc ?

DarkGod
Probabilmente devo compilarle con qualche opzione particolare......

DarkGod
Originally posted by Alf
Cioe' li hai sostituiti e poi hai ricompilato tutto il vlc ?


Esatto.
Ho sostituito i file delle librerie con quelli appena compilati, e poi rifatto da capo ./configure e make per compilare VLC.
Ma l'errore è lo stesso di prima...

DarkGod
Le librerie vanno linkate manualmente o ci pensa il Makefile di VLC a linkarle?

Walter
Hai usato queste istruzioni per la compilazione di VLC?

http://developers.videolan.org/vlc/...ronmentRevB.pdf

DarkGod
Originally posted by Walter
Hai usato queste istruzioni per la compilazione di VLC?

http://developers.videolan.org/vlc/...ronmentRevB.pdf


Sì sì...
Ma quella guida è del 2004 e utilizzava il gcc 3.3.3, mentre io devo usare la versione 3.4.4.
(In ogni caso non mi funzionava nemmeno col 3.3.3, ho provato anche quello)

DeepBlue
Sì però devi tenere conto che Cygwin è solo un'emulazione del terminale, qualcosa potrebbe anche non funzionare

DarkGod
Originally posted by DeepBlue
Sì però devi tenere conto che Cygwin è solo un'emulazione del terminale, qualcosa potrebbe anche non funzionare


Sto proprio cercando di capire cosa non funziona....

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate