Cinelerra CV su Ubuntu

Da Faber Libertatis.

Cinelerra, il più pazzo, avanzato e complicato programma di editing video per Linux, ha una ciclo di sviluppo molto vitale, che procede parallelamente con i rilasci della versione ufficiale (l'articolo è scritto dopo l'uscita della versione 2.1) e con quelli della community version dal sito SVN non ufficiale.

Difficilmente le distribuzioni più diffuse hanno un pacchetto precompilato per cinelerra nei loro blasonati archivi. Esistono pacchetti precompilati che vengono rilasciati con una certa frequenza per diverse distro, soprattutto la Debian SID e Ubuntu.

Un'amica voleva con forza poter compilare da sè il programma usando la versione più recente del codice sorgente presa di sana pianta dal sito non ufficiale. Il tutto non avendo mai compilato niente in vita sua.

Questa pagina è il risultato del tentativo di fornirle i ragguagli necessari.

Preambolo sulla compilazione

Se hai già un'idea di cosa significa compilare non è necessario leggere questa sezione.

Quello che vogliamo fare è compilare dal codice sorgente un programma molto complesso.

Compilare vuol dire ottenere un eseguibile (codice binario) a partire da del codice sorgente. Il codice sorgente si può scriverselo da soli, scaricare da un sito o procurarselo in altri modi. Una volta ottenuto il codice sorgente per operare la trasformazione in programma eseguibile si necessita di:

  • una serie di tool necessari alla generazione (build) del codice binario;
  • gli header delle librerie usate dal programma;
  • le librerie usate dal programma.

Facciamo l'esempio più semplice che si possa fare. Creiamo il file ciao_a_tutti.c contente il seguente testo:

#include <stdio.h>

int main()
{
   printf("Ciao a tutti!\n");
   return 0;
}

e diamo da terminale, trovandoci nella stessa cartella del file appena creato, i comandi:

$ gcc -c ciao_a_tutti.c
$ gcc -o ciao_a_tutti ciao_a_tutti.o

Ora possiamo sempre dalla stessa cartella dare il comando:

$ ./ciao_a_tutti

e vedrai comparire la scritta "Ciao a tutti!" su di una riga. Bene, abbiamo con ciò scritto, compilato, linkato ed eseguito un primo, semplicissimo programma.

Il file ciao_a_tutti.c nel nostro esempio è il codice sorgente. L'estensione .c sta ad indicare che è scritto in linguaggio C. L'eseguibile è ciao_a_tutti, senza estensione, e per eseguirlo nella sua stessa directory bisogna precederlo da ./. Il primo comando gcc genera il codice oggetto ciao_a_tutti.o, cioé il codice compilato ottenuto da ciao_a_tutti.c. Questo codice non può essere eseguito perchè manca un pezzo di codice che permette di eseguire il comando printf, che si trova dentro la libreria libc6 e la cui dichiarazione è invece contenuta nel file header stdio.h, che viene appunto citato nel codice sorgente. Il secondo comando gcc linka il codice oggetto ciao_a_tutti.o con il pezzo di libreria necessaria al fine di produrre l'eseguibile.

Quindi servono i seguenti pezzi:

  • comando gcc (pacchetto gcc)
  • libreria libc6 (pacchetto libc6)
  • header stdio.h (pacchetto libc6-dev, dove dev sta per development cioe' sviluppo)

Senza libc6 Linux non può funzionare, gli altri pacchetti non vengono installati da Ubuntu. Conviene dunque installare il pacchetto build-essential che porta come dipendenze questi e altri pacchetti fondamentali per la compilazione del codice sorgente C e C++ (i due linguaggi più usati dalle comunità dell'Open Source).

Compilare e installare Cinelerra

Prima di iniziare: avete abilitato le repository universe e multiverse? per informazioni rivolgetevi al Wiki di Ubuntu.

Prima tappa: ottenenere il codice sorgente dall'archivio on-line. Trattandosi di un sistema di controllo delle versioni basato su Subversion, è necessario l'opportuno comando svn per realizzare una copia in una cartella locale.

$ sudo apt-get install subversion

Come spiegato sullo stesso sito scarichiamo la copia in locale:

$ svn checkout svn://svn.skolelinux.org/cinelerra/trunk/hvirtual

Torniamo al nostro cinelerra. Per compilare sono necessari i pacchetti build-essential, autoconf, automake1.9, libtool, nasm, yasm e gettext.

$ sudo apt-get install build-essential autoconf automake1.9 libtool nasm yasm gettext

Eseguiamo i seguenti comandi:

$ cd hvirtual
$ ./autogen.sh

Quest'ultimo genera tutta una serie di file necessari ad automatizzare la compilazione, e tra i quali lo script configure''.

Configure tra le varie cose controlla che sul sistema siamo installate tutte le librerie necessarie. Le librerie che chiede prendono dei nomi diversi a seconda della distro dell'utente nel caso di Ubuntu si tratta di dare il comando:

$ sudo apt-get install xorg-dev libasound2-dev libogg-dev libvorbis-dev libtheora-dev \
libopenexr-dev libdv4-dev libpng12-dev libjpeg62-dev libtiff4-dev libx264-dev uuid-dev mjpegtools libmjpegtools-dev \ 
fftw3-dev liba52-0.7.4-dev liblame-dev libsndfile1-dev libfaac-dev libfaad2-dev esound libesd0-dev \
libavc1394-dev libraw1394-dev libiec61883-dev

Verranno installati una marea pacchetti di dipendenza... Poi si diano in sequenza i seguenti comandi (i parametri di configure valgono per l'archiettura x86):

$ ./configure --enable-mmx --without-pic
$ make
$ sudo make install
$ sudo ldconfig

Trovate qualcosa da fare dopo aver digitato il comando make, andrà parecchio per le lunghe.

Siamo dunque pronti ad eseguire Cinelerra!

$ cinelerra &

Nota. Il bello è che l'eventuale Cinelerra scaricato dalla repository è rimasto, probabilmente in /usr/bin/cinelerra, mentre quello compilato si trova dentro /usr/local/bin/cinelerra (eseguendo cinelerra senza il percorso ha precedenza la versione contenuta in /usr/local/bin rispetto a quella in /usr/bin ).