%general-entities; ]> $LastChangedBy$ $Date$ Qt-&qt4-version; Qt Introduction to Qt Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt is classified as a widget toolkit), and also used for developing non-GUI programs such as command-line tools and consoles for servers. One of the major users of Qt is KDE. &lfs74_checked; Package Information Download (HTTP): Download (FTP): Download MD5 sum: &qt4-md5sum; Download size: &qt4-size; Estimated disk space required: &qt4-buildsize; Estimated build time: &qt4-time; Qt Dependencies Required Recommended , , , , , (unicode support), , , , , , and Optional , (GTK+ 2 theme support), (For QtWebKit HTML5 Video), or , , , , and (runtime, if also installing Qt5 and installing in /usr) User Notes: Installation of Qt There are several ways to install a complicated package such as Qt. The files are not completely position independent. Installation procedures execute the program pkg-config to determine the location of package executables, libraries, headers, and other files. For Qt, pkg-config will look for the appropriate lib/pkgconfig/Qt*.pc files which must be modified if relocating the package. These files are set up correctly by the build process. The default installation places the files in /usr/local/qt/. Many commercial distributions place the files in the system's /usr hierarchy. The package can also be installed in an arbitrary directory. The advantage of installing in /usr is that no updates to the /etc/ld.so.conf or /etc/man_db.conf files are required. The package files are distributed within several subdirectories of the /usr hierarchy. This is the method that most commercial distributions use. It is also supported by the optional qtchooser application. The disadvantage of installing in /usr is that the executable filenames for Qt4 and Qt5 conflict if both packages are installed in the same directory. The instructions below give a workaround for this problem using the helper program . This requires renaming the Qt executables with a version suffix. The advantage of installing Qt4 in a custom directory such as /opt/qt-&qt4-version; is that it keeps all the package files consolidated in a dedicated directory hierarchy. By using this method, an update can be made without overwriting a previous installation and users can easily revert to a previous version by changing one symbolic link or merely changing the PATH variable. It also allows a developer to maintain multiple versions of Qt4 or Qt5 for testing. If you did not install some of the recommended dependencies, examine ./configure --help output to check how to disable them or use internal versions bundled in the source tarball. If Qt4 is being reinstalled into the same directory as an existing instance, run the following commands from a console or non-Qt4 based window manager. It overwrites Qt4 libraries that should not be in use during the install process. The build time and space required for the full Qt is quite long. The instructions below do not build the tutorials and examples. Removing the -nomake lines will create a complete build. Method 1: Installing in /usr Install Qt4 by running the following commands: If not also installing Qt5 into the /usr directory, change the entry for -bindir below to /usr/bin. 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/lib/qt4/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 This package does not come with a test suite. Remove references to the build directory from the .pc files by running the following command: find . -name "*.pc" -exec perl -pi -e "s, -L$PWD/?\S+,,g" {} \; Now, as the root user: make install && rm -rf /usr/tests && 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 Remove references to the build directory from installed files by running the following command as the root user: 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 -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' \ /usr/lib/libQt${file}.prl done unset file If also installing Qt5 into /usr, symlink the Qt4 executables into /usr/bin by running the following commands as the root user: for file in /usr/lib/qt4/bin/* do ln -sfv ../lib/qt4/bin/$(basename $file) /usr/bin/$(basename $file)-qt4 done Method 2: Installing in /opt/qt-&qt4-version; This section provides an alternate way to install Qt4 by installing almost all of the files in the /opt directory. This allows management of all Qt4 related files in one unit. For instance, a new version of Qt4 can be installed without over-writing the existing installation and entire Qt4 instances can be easily removed. However, it has the disadvantage of needing some extra configuration. Install Qt in /opt/qt-&qt4-version; by running the following commands: 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 && export QTDIR=/opt/qt-&qt4-version; ./configure -prefix $QTDIR \ -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 Now, as the root user: make install && ln -svfn qt-&qt4-version; /opt/qt && 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 Remove references to the build directory from installed files by running the following command as the root user: for file in `basename -a -s .prl $QTDIR/lib/lib*.prl`; do sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' \ $QTDIR/lib/${file}.prl perl -pi -e "s, -L$PWD/?\S+,,g" $QTDIR/lib/pkgconfig/${file##lib}.pc done unset file Command Explanations sed -i ...: First command fixes detection of libmng 2.0 and second one prevents configure script to write in root directory if building as privileged user. -confirm-license: Accept license without prompting user during configuration. -opensource: Install the opensource version of Qt. -release: This switch disables building with debugging symbols. -nomake examples -nomake demos: These switches disable building programs that are only of interest to a Qt developer. -system-sqlite: This switch enables use the system version of SQLite. -no-nis: This switch disables support for Network Information Service (NIS) which has been deprecated in recent versions of Glibc. -no-phonon -no-phonon-backend: These switches disable building of the bundled Phonon library. Better version is provided by package. -dbus-linkend -openssl-linkend: These switches enable explicit linking of the D-Bus and OpenSSL libraries into Qt libraries instead of dlopen()-ing them. -no-openvg: This switch disables OpenVG support in Qt. -optimized-qmake: This switch enables building of the optimized qmake program. : Use this switch if you don't have D-Bus installed. Configuring Qt Configuration Information If you installed Qt in /usr, create an environment variable needed by certain packages. As the root user: cat > /etc/profile.d/qt.sh << EOF # Begin /etc/profile.d/qt.sh QTDIR=/usr export QTDIR # End /etc/profile.d/qt.sh EOF If you installed Qt in a location other than /usr, you need to update the following configuration files so that Qt is correctly found by other packages and system processes. As the root user, update the /etc/ld.so.conf file and the dynamic linker's run-time cache file: cat >> /etc/ld.so.conf << EOF # Begin Qt addition /opt/qt/lib # End Qt addition EOF ldconfig /etc/ld.so.conf As the root user, create the /etc/profile.d/qt.sh file: cat > /etc/profile.d/qt.sh << EOF # Begin /etc/profile.d/qt.sh QTDIR=/opt/qt pathappend /opt/qt/bin PATH pathappend /opt/qt/lib/pkgconfig PKG_CONFIG_PATH export QTDIR # End /etc/profile.d/qt.sh EOF For all methods, create the menu entries for installed applications. As the root user: install -dm755 /usr/share/applications cat > /usr/share/applications/qtconfig-qt4.desktop << "EOF" [Desktop Entry] Name=Qt4 Config Comment=Configure Qt4 behavior, styles, fonts Exec=qtconfig-qt4 Icon=qt4logo Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Settings; EOF cat > /usr/share/applications/assistant-qt4.desktop << "EOF" [Desktop Entry] Name=Qt4 Assistant Comment=Shows Qt4 documentation and examples Exec=assistant-qt4 Icon=assistant-qt4 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=designer-qt4 Icon=designer-qt4 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=linguist-qt4 Icon=linguist-qt4 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=qdbusviewer-qt4 Icon=qdbusviewer-qt4 Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Debugger; EOF Contents Installed Programs Installed Libraries Installed Directories assistant-qt4, designer-qt4, lconvert-qt4, linguist-qt4, lrelease-qt4, lupdate-qt4, moc-qt4, pixeltool-qt4, qcollectiongenerator-qt4, qdbuscpp2xml-qt4, qdbus-qt4, qdbusviewer-qt4, qdbusxml2cpp-qt4, qdoc3-qt4, qhelpconverter-qt4, qhelpgenerator-qt4, qmake-qt4, qmlplugindump-qt4, qmlviewer-qt4, qt3to4-qt4, qtconfig-qt4, qttracereplay-qt4, rcc-qt4, uic3-qt4, uic-qt4, xmlpatterns-qt4 and xmlpatternsvalidator-qt4 libQt3Support.so, libQtCLucene.so, libQtCore.so, libQtDBus.so, libQtDeclarative.so, libQtDesignerComponents.so, libQtDesigner.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 and libQtXml.so /usr/include/qt4, /usr/lib/qt4, /usr/share/doc/qt4, and /usr/share/qt4 (OR $QTDIR) (OR $QTDIR) Short Descriptions assistant-qt4 is a tool for presenting on-line documentation. assistant-qt4 designer-qt4 is a full-fledged GUI builder. It includes powerful features such as preview mode, automatic widget layout, support for custom widgets, and an advanced property editor. designer-qt4 linguist-qt4 provides support for translating applications into local languages. linguist-qt4 lrelease-qt4 is a simple command line tool. It reads a Qt project file and produces message files used by the application. lrelease-qt4 lupdate-qt4 reads a Qt project file, finds the translatable strings in the specified source, header and Qt Designer interface files, and produces or updates the translation files listed in the project file. lupdate-qt4 moc-qt4 generates Qt meta object support code. moc-qt4 pixeltool-qt4 is a desktop magnifier and as you move your mouse around the screen it will show the magnified contents in its window. pixeltool-qt4 qmake-qt4 uses information stored in project files to determine what should go in the makefiles it generates. qmake-qt4 qt3to4-qt4 qt3to4 is a tool to help update Qt3 code to Qt4. qt3to4-qt4 qtconfig-qt4 is used to customize the appearance of Qt applications. qtconfig-qt4 rcc-qt4 is a resource compiler used in conjunction with designer. rcc-qt4 uic-qt4 is a Qt user interface compiler. uic-qt4 uic3-qt4 is a tool to generate Qt4 code out of user interface files generated by the Qt3 version of designer. uic3-qt4