Librerie X

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.

Qt-3.3.3

Introduzione a Qt

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.

Informazioni sul pacchetto

Installazione di Qt

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.

[Nota]

Nota

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

Metodo 1 - Installazione in /usr

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

Metodo 2 - Installazione in /opt

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
[Nota]

Nota

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.

Spiegazioni dei comandi

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.

Configurazione di Qt

Informazioni di configurazione

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.

Contenuti

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.