Questo capitolo non contiene librerie necessarie all'esecuzione di X. Esso contiene librerie che espandono X. In alcuni casi l'espansione è un semplice supporto font. In altri si tratta di librerie complesse che si pongono tra X e le applicazioni che funzionano su X, il cui intento è di standardizzare il look and feel e la comunicazione tra processi per le diverse applicazioni. Esse inoltre assistono i programmatori fornendo elementi comuni.
Il pacchetto Qt contiene una libreria GUI C++. Essa è utile per la creazione di applicazioni grafiche o l'esecuzione di applicazioni grafiche che sono collegate dinamicamente alla libreria Qt. Uno dei principali utilizzatori di Qt è KDE.
Download (HTTP): http://sunsite.rediris.es/mirror/Qt/source/qt-x11-free-3.3.3.tar.bz2
Download (FTP): ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.3.tar.bz2
Download MD5 Sum: 3e0a0c8429b0a974b39b5f535ddff01c
Dimensione del download: 14.4 MB
Stima dello spazio su disco richiesto: 250 MB
Stima del tempo di costruzione: 19.3 SBU (full), 13.4 SBU (sub-tools)
Ci sono molti modi di installare un pacchetto complesso come Qt. I file non sono completamente indipendenti dalla posizione. Le procedure di installazione eseguono il programma pkg-config per determinare la locazione di pacchetti eseguibili, librerie, header, e altri file. Per Qt, pkg-config cercherà il file lib/pkgconfig/qt-mt.pc, che deve essere modificato se si riposiziona il pacchetto. Questo file è impostato correttamente dal processo di costruzione.
L'installazione predefinita posiziona i file in /usr/local/qt/. Molte distribuzioni commerciali mettono i file nella gerarchia di sistema /usr. Il pacchetto può anche venire installato in una directory arbitraria.
Questa sezione mostrerà due diversi metodi.
Il tempo di costruzione per Qt è piuttosto lungo. Se si vuole risparmiare un po' di tempo e non si vogliono i tutorial e gli esempi, si cambi la prima linea di make in:
make sub-tools
Il vantaggio di questo metodo è che non sono richiesti aggiornamenti ai file /etc/ld.so.conf o /etc/man.conf. I file del pacchetto sono distribuiti all'interno di numerose sottodirectory della gerarchia /usr. Questo è il metodo utilizzato dalla maggior parte delle distribuzioni commerciali.
sed -i "s:cp -f:install:" mkspecs/linux-g++/qmake.conf &&
bash
export PATH=$PWD/bin:$PATH &&
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH &&
./configure -prefix /usr -docdir /usr/share/doc/qt \
-headerdir /usr/include/qt -plugindir /usr/lib/qt/plugins \
-datadir /usr/share/qt -translationdir /usr/share/qt/translations \
-sysconfdir /etc/qt -qt-gif -system-zlib -system-libmng \
-no-exceptions -thread -plugin-imgfmt-png \
-system-libjpeg -system-libpng &&
find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g" &&
make &&
make install &&
ln -sf libqt-mt.so /usr/lib/libqt.so &&
rm /usr/bin/qmake &&
install -m755 -oroot -groot qmake/qmake /usr/bin &&
cp -r doc/man /usr/share &&
cp -r examples /usr/share/doc/qt &&
exit
Questo è il metodo raccomandato dagli sviluppatori di Qt. Esso ha il vantaggio di tenere tutti i file del pacchetto raggruppati in una gerarchia di directory dedicata. Usando questo metodo un aggiornamento può essere fatto senza sovrascrivere una precedente installazione e gli utenti possono facilmente tornare a una versione precedente cambiando un link simbolico.
Gli sviluppatori di Qt usano una locazione di default /usr/local/qt/, tuttavia questa procedura mette i file in /opt/qt-3.3.3/ e quindi crea un link simbolico a /opt/qt/.
bash
export QTDIR=$PWD &&
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH &&
export PATH=$PWD/bin:$PATH &&
./configure -prefix /opt/qt-3.3.3 -qt-gif -system-libpng \
-system-libmng -system-zlib -system-libjpeg -no-exceptions \
-thread -plugin-imgfmt-png &&
make &&
make install &&
ln -sfn qt-3.3.3 /opt/qt &&
ln -s libqt-mt.so /opt/qt/lib/libqt.so &&
rm /opt/qt-3.3.3/bin/qmake &&
install -m755 -oroot -groot qmake/qmake /opt/qt-3.3.3/bin &&
cp -r doc/man /opt/qt/doc &&
cp -r examples /opt/qt/doc
exit
Se si passa lo switch -plugin-sql-[driver] al comando configure, si deve anche passare -I[/path/to/sql/headers], così make può trovare i file header appropriati.
sed -i "s:cp -f:install:" mkspecs/linux-g++/qmake.conf: install è più sicuro di cp quando le librerie sono in uso.
bash: questo comando entra in una sotto-shell per isolare i cambiamenti dell'ambiente.
export QTDIR=$PWD: questo comando definisce dove si trova la radice della directory Qt.
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH: questo comando permette alle librerie Qt, non ancora installate, di essere usate dai programmi Qt non ancora installati.
export PATH=$PWD/bin:$PATH: questo comando permette al processo di costruzione di trovare eseguibili di supporto.
-qt-gif: questo switch aggiunge il supporto per i file gif alle librerie.
-system-zlib -system-libpng: questo switch forza le istruzioni di costruzione ad usare le librerie condivise che sono sul proprio sistema invece di creare un set personalizzato di librerie di supporto per queste funzioni.
-plugin-imgfmt-png: questo switch abilita il collegamento al runtime di libpng.
-no-exceptions: questo switch disabilita i codici di eccezione generati dal compilatore C++.
-thread: questo switch aggiunge il supporto per il multi-threading.
find -type f -name Makefile | xargs sed -i "s@-Wl,-rpath,/usr/lib@@g": questo comando rimuove i path run-time incorporati. Altrimenti uic tenta sempre di girare con le librerie Qt in /usr/lib.
ln -s libqt-mt.so /usr/lib/libqt.so: questo comando permette agli script configure di trovare un'installazione funzionante di Qt.
rm .../qmake; install -m755 -oroot -groot qmake/qmake .../bin: Il programma qmake non è installato correttamente da make install. Questi due comandi installano il programma correttamente.
cp -r doc/man /usr/share (or /opt/qt/doc): questo comando installa le pagine manuale mancate da make install.
cp -r examples /usr/share/doc/qt (or /opt/qt/doc): questo comando installa gli esempi che vengono mancati da make install.
exit: questo comando ritorna alla shell genitore ed elimina le variabili di ambiente impostate in precedenza.
Se si è installato Qt usando il Metodo 2 bisogna aggiornare alcuni file di configurazione così che Qt sia correttamente trovato da altri pacchetti e processi di sistema.
Aggiornare i file /etc/ld.so.conf e /etc/man.conf:
cat >> /etc/ld.so.conf << "EOF"
# Begin qt addition to /etc/ld.so.conf
/opt/qt/lib
# End qt addition
EOF
ldconfig
cat >> /etc/man.conf << "EOF"
# Begin qt addition to man.conf
MANPATH /opt/qt/doc/man
# End qt addition to man.conf
EOF
Aggiornare la variabile d'ambiente PKG_CONFIG_PATH nel proprio ~/.bash_profile o /etc/profile con quanto segue:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/qt/lib/pkgconfig
La variabile d'ambiente QTDIR deve essere impostata quando si costruiscono pacchetti che dipendono da Qt. Aggiungere il seguente allo script di inizializzazione .bash_profile per ciascun utente che costruisce pacchetti usando le librerie Qt. In alternativa la variabile può essere settata nel file generale di sistema /etc/profile.
export QTDIR=/opt/qt
Se si vogliono gli eseguibili Qt nel proprio percorso di ricerca nella shell si aggiorni la variabile d'ambiente PATH nel proprio ~/.bash_profile o /etc/profile includendo /opt/qt/bin.
Come per molte librerie non bisogna fare nessuna configurazione esplicita. Dopo aver aggiornato /etc/ld.so.conf come spiegato sopra, eseguire /sbin/ldconfig, così che ldd possa trovare le librerie condivise.
La libreria Qt/X11 contiene le API necessarie per usare programmi basati sul toolkit GUI Qt.
Il pacchetto Qt contiene assistant, designer, linguist, lrelease, lupdate, moc, qm2ts, qmake, qtconfig, uic, e le librerie libqt-mt e libqui.