Qt-4.8.6

Introduction à Qt

Qt est un environnement de travail d'applications multi-plate-forme qui est largement utilisé pour développer des applications avec une interface utilisateur graphique (GUI) (dans quelques cas Qt est classé comme une trousse de widgets), et aussi utilisé pour développer des programmes non-GUI comme les outils en ligne de commande et les consoles pour les serveurs. Un des utilisateurs majeurs de Qt est KDE.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-7.7.

Information sur le paquet

Dépendances de Qt

Requises

Xorg Libraries

Recommandées

Facultative

Cups-2.0.2, gtk+-2.24.26 (support des thèmes GTK+ 2), GStreamer Base Plug-ins-0.10.36 (pour les vidéos QtWebKit HTML5), MariaDB-10.0.16 ou MySQL, PostgreSQL-9.4.1, PulseAudio-5.0 et unixODBC-2.3.2

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/qt4

Alternatives d'installation de Qt

L'installation de Qt présente plusieurs challenges et choix. La complication de l'installation de Qt est le fait qu'il y a deux versions, Qt4 et Qt5, qui ont des programmes exécutables avec des noms identiques. Si les deux paquets sont installés sur un système, la seule méthode pour gérer quel ensemble de programmes est utilisé est soit de contrôler le PATH de l'utilisateur ou de renommer les fichiers soit directement ou via des liens symboliques. Les deux paquets ne peuvent pas être installés dans le même répertoire.

Si vous installez seulement une des versions de Qt, le choix de l'installation est facile. Vous pouvez soit installer le composant dans plusieurs répertoires de la hiérarchie /usr ou installer le paquet entièrement dans un répertoire séparé de votre choix. Nous nous référons à ces options comme "Méthode 1: Installation dans /usr" et "Méthode 2: Installation dans /opt".

Si les deux versions de Qt doivent être installée, une ou les deux versions doivent être installées dans un répertoire séparé. Pour la discussion ici nous utiliserons le répertoire /opt. La sélection de quelle version doit être utilisée par des utilisateurs individuels sur un système est contrôlé par la variable PATH. D'autres systèmes peuvent être imaginés, mais les éditeurs de BLFS trouvent la méthode du PATH plus simple.

L'avantage d'installer dans /usr est qu'il n'y à pas de mise à jour des fichiers /etc/ld.so.conf ou /etc/man_db.conf. Les fichiers du paquet sont répartis dans plusieurs sous-répertoire de la hiérarchie /usr. C'est la méthode que le plus de distributions commerciales utilisent. Le désavantage pour les utilisateurs de BLFS est que la version de Qt ne peut pas être mise à jour quand elle est utilisée. Par exemple, elle ne peut pas être mise à jour dans un environnement KDE. cela implique également de multiples versions de Qt sur votre système et ne permet pas de retourner à une version existante de Qt connue pour fonctionner.

L'avantage d'installer Qt dans un répertoire personnalisé comme /opt/qt-4.8.6 ou /opt/qt-5.4.0 ou est que cela laisse tous les fichiers du paquet consolidés dans une hiérarchie de répertoires dédiées. En utilisant cette méthode, une mise à jour peut être faite sans écraser une installation précédente et les utilisateurs peuvent facilement retourner dans une version précédente en changeant un lien symbolique ou simplement en changeant la variable PATH. Cela permet également à un développeur de maintenir des versions multiplus de Qt4 ou Qt5 pour tester.

Installation de Qt

[Attention]

Attention

Si vous n'installez pas quelques unes des dépendances recommandées, examinez la sortie de ./configure --help pour vérifier comment les désactiver ou utiliser les versions internes livrées avec l'archive des sources.

[Avertissement]

Avertissement

Si Qt4 doit être réinstallé dans le même répertoire qu'une précédente installation, lancez les commandes fait par root, comme make install, depuis une console ou un gestionnaire de fenêtres non Qt4. Elle écrase les bibliothèques Qt4 qui ne devraient pas être utilisées pendant le processus d'installation.

[Note]

Note

Le temps et l'espace de construction requis pour tout Qt4 est considérable. Les instructions ci-dessous ne construisent pas les tutoriels et les exemples. La suppression des lignes -nomake créera une construction complète.

Corrige une vulnérabilitée DoS dans les entêtes d'image GIF:

sed -i -e '631a if (image->isNull()) { state = Error; return -1; }' \
    src/gui/image/qgifhandler.cpp

Méthode 1: Installation dans /usr

Installez Qt4 dans la hiérarchie /usr en lançant les commandes suivantes

export QT4LINK=/usr
sed -i -e "/#if/d" -e "/#error/d" -e "/#endif/d" \
     config.tests/unix/libmng/libmng.cpp &&
sed -i '/CONFIG -/ a\isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../..' \
     src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro &&
./configure -prefix         /usr                 \
            -bindir         /usr/bin             \
            -plugindir      /usr/lib/qt4/plugins \
            -importdir      /usr/lib/qt4/imports \
            -headerdir      /usr/include/qt4     \
            -datadir        /usr/share/qt4       \
            -sysconfdir     /etc/xdg             \
            -docdir         /usr/share/doc/qt4   \
            -demosdir       /usr/share/doc/qt4/demos    \
            -examplesdir    /usr/share/doc/qt4/examples \
            -translationdir /usr/share/qt4/translations \
            -confirm-license   \
            -opensource        \
            -release           \
            -dbus-linked       \
            -openssl-linked    \
            -system-sqlite     \
            -no-phonon         \
            -no-phonon-backend \
            -no-nis            \
            -no-openvg         \
            -nomake demos      \
            -nomake examples   \
            -optimized-qmake   &&
make

Ce paquet n'a pas de suite de tests.

Enlevez les références au répertoire de construction dans les fichiers .pc en lançant la commande suivante:

find . -name "*.pc" -exec perl -pi -e "s, -L$PWD/?\S+,,g" {} \;

Maintenant, en tant qu'utilisateur root :

make install &&
rm -rf /usr/tests

Effacez les références au répertoire d'installation des fichiers installés en lançant les commandes suivantes en tant qu'utilisateur root:

for file in 3Support CLucene Core DBus Declarative DesignerComponents \
            Designer Gui Help Multimedia Network OpenGL Script \
            ScriptTools Sql Svg Test UiTools WebKit XmlPatterns Xml phonon; do
     [ -e /usr/lib/libQt${file}.prl ] &&
     sed -r '/^QMAKE_PRL_BUILD_DIR/d;s/(QMAKE_PRL_LIBS =).*/\1/' \
         -i /usr/lib/libQt${file}.prl
done
unset file

Méthode 2: Installation dans /opt/qt-4.8.6

Cette partie fournit l'installation de Qt4 avec presque tous les fichiers dans le répertoire /opt.

export QT4DIR=/opt/qt-4.8.6 &&
export QT4LINK=/opt/qt4 &&
sed -i -e "/#if/d" -e "/#error/d" -e "/#endif/d" \
     config.tests/unix/libmng/libmng.cpp &&
sed -i '/CONFIG -/ a\isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../..' \
     src/3rdparty/webkit/Source/WebKit2/DerivedSources.pro &&
./configure -prefix     $QT4DIR  \
            -sysconfdir /etc/xdg \
            -confirm-license     \
            -opensource          \
            -release             \
            -dbus-linked         \
            -openssl-linked      \
            -system-sqlite       \
            -plugin-sql-sqlite   \
            -no-phonon           \
            -no-phonon-backend   \
            -no-nis              \
            -no-openvg           \
            -nomake demos        \
            -nomake examples     \
            -optimized-qmake     &&
make

Maintenant, en tant qu'utilisateur root:

make install
ln -svfn $QT4DIR /opt/qt4

Enlevez les références au répertoire de construction dans les fichiers installés en lançant la commande suivante en tant qu'utilisateur root :

for file in `basename -a -s .prl $QT4DIR/lib/lib*.prl`; do
       sed -r -e '/^QMAKE_PRL_BUILD_DIR/d'    \
              -e 's/(QMAKE_PRL_LIBS =).*/\1/' \
              -i $QT4DIR/lib/${file}.prl
   perl -pi -e "s, -L$PWD/?\S+,,g" $QT4DIR/lib/pkgconfig/${file##lib}.pc
done
unset file

La suite pour les deux méthodes

Pour toutes les méthodes, installez les images et créez les entrées de menu pour les applications installées. Soyez certain que la variable QT4LINK est définie dans l'environnement root et en tant qu'utilisateur root :

install -v -Dm644 src/gui/dialogs/images/qtlogo-64.png \
                  /usr/share/pixmaps/qt4logo.png       &&
install -v -Dm644 tools/assistant/tools/assistant/images/assistant-128.png \
                  /usr/share/pixmaps/assistant-qt4.png &&
install -v -Dm644 tools/designer/src/designer/images/designer.png \
                  /usr/share/pixmaps/designer-qt4.png  &&
install -v -Dm644 tools/linguist/linguist/images/icons/linguist-128-32.png \
                  /usr/share/pixmaps/linguist-qt4.png  &&
install -v -Dm644 tools/qdbus/qdbusviewer/images/qdbusviewer-128.png \
                  /usr/share/pixmaps/qdbusviewer-qt4.png &&
install -dm755 /usr/share/applications &&
cat > /usr/share/applications/assistant-qt4.desktop << EOF
[Desktop Entry]
Name=Qt4 Assistant 
Comment=Shows Qt4 documentation and examples
Exec=$QT4LINK/bin/assistant
Icon=assistant-qt4.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Documentation;
EOF
cat > /usr/share/applications/designer-qt4.desktop << EOF
[Desktop Entry]
Name=Qt4 Designer
Comment=Design GUIs for Qt4 applications
Exec=$QT4LINK/bin/designer
Icon=designer-qt4.png
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF
cat > /usr/share/applications/linguist-qt4.desktop << EOF
[Desktop Entry]
Name=Qt4 Linguist 
Comment=Add translations to Qt4 applications
Exec=$QT4LINK/bin/linguist
Icon=linguist-qt4.png
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF
cat > /usr/share/applications/qdbusviewer-qt4.desktop << EOF
[Desktop Entry]
Name=Qt4 QDbusViewer 
GenericName=D-Bus Debugger
Comment=Debug D-Bus applications
Exec=$QT4LINK/bin/qdbusviewer
Icon=qdbusviewer-qt4.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Debugger;
EOF
cat > /usr/share/applications/qtconfig-qt4.desktop << EOF
[Desktop Entry]
Name=Qt4 Config 
Comment=Configure Qt4 behavior, styles, fonts
Exec=$QT4LINK/bin/qtconfig
Icon=qt4logo.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Settings;
EOF

Explications des commandes

sed -i "..." ...: La première commande corrige la détection de libmng 2.0 et la seconde empêche le script configure d'écrire dans un répertoire root si la construction est en tant qu'utilisateur privilégié.

-confirm-license : Accepte la licence sans le demander à l'utilisateur pendant la configuration.

-opensource : Installe la version libre de Qt.

-release : Ce paramètre désactive la construction avec les symboles de débogage.

-nomake examples -nomake demos : Ces paramètres désactivent la construction de programmes qui n'ont d'intérêt que pour un développeur utilisant Qt.

-system-sqlite : Ce paramètre active l'utilisation de la version du système de SQLite.

-no-nis : Ce paramètre désactive le support de Network Information Service (NIS, service d'informations réseau) qui a été déprécié dans la version récente de Glibc.

-no-phonon -no-phonon-backend : Ces paramètres désactivent la construction de la bibliothèque Phonon fournie. Une meilleure version est fournie par le paquet phonon-4.8.3.

-dbus-linked -openssl-linked : Ces paramètres activent la liaison explicites des bibliothèques D-Bus et OpenSSL dans les biblothèques Qt au lieu de les dlopen()-nés.

-no-openvg : Ce paramètre désactive le support de OpenVG dans Qt.

-optimized-qmake: Ce paramètre active la construction du programme optimisé qmake.

-no-dbus: Utilisez ce paramètre si vous n'avez pas installé D-Bus.

Configuration de Qt

Informations de configuration

Si vous avez installé Qt dans /usr, créez une variable d'environnement nécessaire pour certain paquets. En tant qu'utilisateur root:

cat > /etc/profile.d/qt4.sh << EOF
# Begin /etc/profile.d/qt4.sh
QT4DIR=/usr
export QT4DIR
# End /etc/profile.d/qt4.sh
EOF

Si vous avez installé Qt dans un endroit autre que /usr, vous devez mettre à jour les fichiers de configuration suivant pour que Qt soit correctement trouvé par les autres paquets et les processus du système.

En tant qu'utilisateur root, mettez à jour le fichier /etc/ld.so.conf et le fichier de cache du lieur dynamique d'exécution:

cat >> /etc/ld.so.conf << EOF
# Begin Qt addition
   
/opt/qt4/lib
   
# End Qt addition
EOF
ldconfig

En tant qu'utilisateur root, créez le fichier /etc/profile.d/qt4.sh :

cat > /etc/profile.d/qt4.sh << EOF
# Begin /etc/profile.d/qt4.sh
   
QT4DIR=/opt/qt4
   
pathappend /opt/qt4/bin           PATH
pathappend /opt/qt4/lib/pkgconfig PKG_CONFIG_PATH
   
export QT4DIR
   
# End /etc/profile.d/qt4.sh
EOF

Choisir la version de programme de Qt

si vous installez Qt4 et Qt5, vous pouvez utiliser des scripts simples pour selectionner l'ensemble des programmes Qt actuellement actifs. En tant qu'utilisateur root, creez les scripts suivants:

cat > /usr/bin/setqt4 << 'EOF'
if [ "x$QT5DIR" != "x/usr" ]; then pathremove  $QT5DIR/bin; fi
if [ "x$QT4DIR" != "x/usr" ]; then pathprepend $QT4DIR/bin; fi
echo $PATH
EOF
cat > /usr/bin/setqt5 << 'EOF'
if [ "x$QT4DIR" != "x/usr" ]; then pathremove  $QT4DIR/bin; fi
if [ "x$QT5DIR" != "x/usr" ]; then pathprepend $QT5DIR/bin; fi
echo $PATH
EOF

Vous pouvez utiliser la version approprie de Qt en lancant source setqt4 ou source setqt5 comme vous le souhaitez. (Initialisez le PATH ne fonctionne pas dans un sous-repertoire.) Une autre technique qui peut etre utilisee est de creer des alias appropries dans votre ~/bashrc comme alias setqt4='source setqt4'.

Contenu

Programmes installés: assistant, designer, lconvert, linguist, lrelease, lupdate, moc, pixeltool, qcollectiongenerator, qdbuscpp2xml, qdbus, qdbusviewer, qdbusxml2cpp, qdoc3, qhelpconverter, qhelpgenerator, qmake, qmlplugindump, qmlviewer, qt3to4, qtconfig, qttracereplay, rcc, uic3, uic, xmlpatterns, et xmlpatternsvalidator
Bibliothèques installées: libQtUiTools.a, libQt3Support.so, libQtCLucene.so, libQtCore.so, libQtDBus.so, libQtDeclarative.so, libQtDesignerComponents.so, libQtGui.so, libQtHelp.so, libQtMultimedia.so, libQtNetwork.so, libQtOpenGL.so, libQtScript.so, libQtScriptTools.so, libQtSql.so, libQtSvg.so, libQtTest.so, libQtWebKit.so, libQtXmlPatterns.so et libQtXml.so
Répertoires installés: /usr/include/qt4, /usr/lib/qt4, /usr/share/doc/qt4 et /usr/share/qt4 OU /opt/qt4 et /opt/qt-4.8.6

Description courte

assistant

est un outil pour présenter de la documentation en ligne.

designer

est un constructeur GUI complètement mûr. Il inclut des fonctionnalités puissantes telles qu'un mode de prévisualisation, l'aménagement automatique des widgets, le support des widgets personnalisés et un éditeur avancé de propriétés.

linguist

fournit un support de traduction d'applications en langues locales.

lrelease

est un outil simple en ligne de commande. Il lit un fichier de projet Qt et produit des fichiers de message utilisés par l'application.

lupdate

lit un fichier de projet Qt, cherche les chaînes traduisibles dans les sources spécifiées, l'en-tête et les fichiers du designer Qt, et produit ou met à jour les fichiers de traduction listés dans le fichier du projet.

moc

génère le support du code des méta-objets Qt.

pixeltool

est une loupe de bureau et, quand vous déplacez votre souris sur l'écran, elle vous montrera le contenu agrandi dans sa fenêtre.

qmake

utilise des informations stockées dans des fichiers de projet pour déterminer ce qui devrait aller dans les makefiles qu'il génère.

qt3to4

qt3to4 est un outil pour aider à mettre à jour du code Qt3 vers Qt4.

qtconfig

est utilisé pour personnaliser l'apparence des applications Qt.

rcc

est un compilateur de ressources utilisé avec le designer.

uic

est un compilateur d'interface utilisateur Qt.

uic3

est un outil pour générer du code Qt4 hors des fichiers de l'interface utilisateur générés par la version Qt3 de designer.

Last updated on 2013-06-02 21:23:30 +0200