%general-entities; ]> $LastChangedBy$ $Date$ Qt-&qt5-version; Qt Introduction to Qt5 Qt5 is a cross-platform application framework that is widely used for developing application software with a graphical user interface (GUI) (in which cases Qt5 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 Frameworks 5 (KF5). &lfs90_checked; Package Information Download (HTTP): Download (FTP): Download MD5 sum: &qt5-md5sum; Download size: &qt5-size; Estimated disk space required: &qt5-buildsize; Estimated build time: &qt5-time; Qt5 Dependencies Required Recommended , , , , (QtMultimedia backend), , , , , , , , , , , , , , (Mesa must be built with Wayland EGL backend), , , , and Optional (for sdpscanner, and at runtime for QtConnectivity module), , , or MySQL, (required for QtWebEngine), , (required for QtWebEngine), , , , Firebird, and libproxy User Notes: Setting the installation prefix Installing in /opt/qt5 The BLFS editors recommend installing Qt5 in a directory other than /usr, ie /opt/qt5. To do this, set the following environment variable: export QT5PREFIX=/opt/qt5 Sometimes, the installation paths are hardcoded into installed files. This is the reason why /opt/qt5 is used as installation prefix instead of /opt/qt-&qt5-version;. To create a versioned Qt5 directory, you may rename the directory and create a symlink: mkdir /opt/qt-&qt5-version; ln -sfnv qt-&qt5-version; /opt/qt5 Later on, you may want to install other versions of Qt5. To do that, just remove the symlink and use /opt/qt5 as the prefix again. Which version of Qt5 you use depends only on where the symlink points. If has been installed and you are reinstalling or updating this package, then qca will need to be reinstalled. Installation of Qt5 If Qt5 is being reinstalled into the same directory as an existing instance, run the commands done by root, such as make install, from a console or non-Qt5 based window manager. It overwrites Qt5 libraries that should not be in use during the install process. 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. The build time and space required for the full Qt5 is quite long. The instructions below do not build the tutorials and examples. Removing the -nomake line will create a complete build. The BLFS editors do not recommend installing Qt5 into the /usr hierarchy because it becomes difficult to find components and to update to a new version. If you do want to install Qt5 in /usr, the directories need to be specified explicitly. In this case, set QT5PREFIX=/usr and add the following to the configure arguments below: -archdatadir /usr/lib/qt5 \ -bindir /usr/bin \ -plugindir /usr/lib/qt5/plugins \ -importdir /usr/lib/qt5/imports \ -headerdir /usr/include/qt5 \ -datadir /usr/share/qt5 \ -docdir /usr/share/doc/qt5 \ -translationdir /usr/share/qt5/translations \ -examplesdir /usr/share/doc/qt5/examples Install Qt5 by running the following commands: sed -i 's/python /python3 /' qtdeclarative/qtdeclarative.pro \ qtdeclarative/src/3rdparty/masm/masm.pri && ./configure -prefix $QT5PREFIX \ -sysconfdir /etc/xdg \ -confirm-license \ -opensource \ -dbus-linked \ -openssl-linked \ -system-harfbuzz \ -system-sqlite \ -nomake examples \ -no-rpath \ -skip qtwebengine && make This package does not come with a test suite. Now, as the root user: make install Remove references to the build directory from installed library dependency (prl) files by running the following command as the root user: find $QT5PREFIX/ -name \*.prl \ -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \; Install images and create the menu entries for installed applications. The QT5BINDIR variable is used here to point to the directory for the executable programs. If you have changed the bindir above, QT5BINDIR will need to be adjusted below. Be sure that the QT5BINDIR variable is defined in root's environment and as the root user: QT5BINDIR=$QT5PREFIX/bin install -v -dm755 /usr/share/pixmaps/ && install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \ /usr/share/pixmaps/assistant-qt5.png && install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \ /usr/share/pixmaps/designer-qt5.png && install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \ /usr/share/pixmaps/linguist-qt5.png && install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \ /usr/share/pixmaps/qdbusviewer-qt5.png && install -dm755 /usr/share/applications && cat > /usr/share/applications/assistant-qt5.desktop << EOF [Desktop Entry] Name=Qt5 Assistant Comment=Shows Qt5 documentation and examples Exec=$QT5BINDIR/assistant Icon=assistant-qt5.png Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Documentation; EOF cat > /usr/share/applications/designer-qt5.desktop << EOF [Desktop Entry] Name=Qt5 Designer GenericName=Interface Designer Comment=Design GUIs for Qt5 applications Exec=$QT5BINDIR/designer Icon=designer-qt5.png MimeType=application/x-designer; Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development; EOF cat > /usr/share/applications/linguist-qt5.desktop << EOF [Desktop Entry] Name=Qt5 Linguist Comment=Add translations to Qt5 applications Exec=$QT5BINDIR/linguist Icon=linguist-qt5.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-qt5.desktop << EOF [Desktop Entry] Name=Qt5 QDbusViewer GenericName=D-Bus Debugger Comment=Debug D-Bus applications Exec=$QT5BINDIR/qdbusviewer Icon=qdbusviewer-qt5.png Terminal=false Encoding=UTF-8 Type=Application Categories=Qt;Development;Debugger; EOF Some packages such as look for certain executables with a -qt5 suffix. Run the following command as the root user to create the necessary symlinks: for file in moc uic rcc qmake lconvert lrelease lupdate; do ln -sfrvn $QT5BINDIR/$file /usr/bin/$file-qt5 done Command Explanations sed ...: Allows using Python 3 instead of Python 2. This command destroys the build for QtWebEngine, so do not use it if you remove the -skip qtwebengine switch. -confirm-license: Accept license without prompting user during configuration. -opensource: Install the opensource version of Qt. -nomake examples: This switch disables building of the example programs included in the source tarball. Remove it if you want to build them. -system-sqlite: This switch enables use of the system version of SQLite. -dbus-linked -openssl-linked: These switches enable explicit linking of the D-Bus and OpenSSL libraries into Qt5 libraries instead of dlopen()-ing them. -skip qtwebengine: This switch disables building the QtWebEngine. The BLFS editors have chosen to build separately. -system-harfbuzz: This switch enables use of the system version of Harfbuzz. Configuring Qt5 Configuration Information If you installed Qt5 in /usr, create an environment variable needed by certain packages. As the root user: cat > /etc/profile.d/qt5.sh << "EOF" # Begin /etc/profile.d/qt5.sh QT5DIR=/usr export QT5DIR pathappend $QT5DIR/bin # End /etc/profile.d/qt5.sh EOF If is installed, QT5DIR should be available to the super user as well. Execute the following commands as the root user: cat > /etc/sudoers.d/qt << "EOF" Defaults env_keep += QT5DIR EOF If you installed Qt5 in a location other than /usr, you need to update the following configuration files so that Qt5 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/qt5/lib # End Qt addition EOF ldconfig /etc/ld.so.conf As the root user, create the /etc/profile.d/qt5.sh file: cat > /etc/profile.d/qt5.sh << "EOF" # Begin /etc/profile.d/qt5.sh QT5DIR=/opt/qt5 pathappend $QT5DIR/bin PATH pathappend $QT5DIR/lib/pkgconfig PKG_CONFIG_PATH export QT5DIR # End /etc/profile.d/qt5.sh EOF Contents Installed Programs Installed Libraries Installed Directories assistant, balsam, canbusutil, designer, fixqt4headers.pl, lconvert, linguist, lprodump, lrelease, lrelease-pro, lupdate, lupdate-pro, meshdebug, moc, pixeltool, qcollectiongenerator, qdbus, qdbuscpp2xml, qdbusviewer, qdbusxml2cpp, qdistancefieldgenerator, qdoc, qgltf, qhelpgenerator, qlalr, qmake, qml, qmlcachegen, qmleasing, qmlimportscanner, qmllint, qmlmin, qmlplugindump, qmlpreview, qmlprofiler, qmlscene, qmltestrunner, qscxmlc, qtattributionscanner, qtdiag, qtpaths, qtplugininfo, qtwaylandscanner, qvkgen, rcc, repc, sdpscanner, syncqt.pl, tracegen, uic, xmlpatterns, and xmlpatternsvalidator libQt53DAnimation.so, libQt53DCore.so, libQt53DExtras.so, libQt53DInput.so, libQt53DLogic.so, libQt53DQuick.so, libQt53DQuickAnimation.so, libQt53DQuickExtras.so, libQt53DQuickInput.so, libQt53DQuickRender.so, libQt53DQuickScene2D.so, libQt53DRender.so, libQt5AccessibilitySupport.a, libQt5Bluetooth.so, libQt5Bodymovin.so, libQt5Bootstrap.a, libQt5Charts.so, libQt5Concurrent.so, libQt5Core.so, libQt5DataVisualization.so, libQt5DBus.so, libQt5DesignerComponents.so, libQt5Designer.so, libQt5DeviceDiscoverySupport.a, libQt5EdidSupport.a, libQt5EglFSDeviceIntegration.so, libQt5EglFsKmsSupport.so, libQt5EglSupport.a, libQt5EventDispatcherSupport.a, libQt5FbSupport.a, libQt5FontDatabaseSupport.a, libQt5Gamepad.so, libQt5GlxSupport.a, libQt5Gui.so,libQt5Help.so, libQt5InputSupport.a, libQt5KmsSupport.a, libQt5LinuxAccessibilitySupport.a, libQt5Location.so, libQt5Multimedia.so, libQt5MultimediaGstTools.so, libQt5MultimediaQuick.so, libQt5MultimediaWidgets.so, libQt5Network.so, libQt5NetworkAuth.so, libQt5Nfc.so, libQt5OpenGLExtensions.a, libQt5OpenGL.so, libQt5PacketProtocol.a, libQt5PlatformCompositorSupport.a, libQt5Positioning.so, libQt5PositioningQuick.so, libQt5PrintSupport.so, libQt5Purchasing.so, libQt5Qml.so, libQt5QmlDebug.a, libQt5QmlDevTools.a, libQt5QmlModels.so, libQt5QmlWorkerScript.so, libQt5Quick.so, libQt5Quick3D.so, libQt5Quick3DAssetImport.so, libQt5Quick3DRender.so, libQt5Quick3DRuntimeRender.so, libQt5Quick3DUtils.so, libQt5QuickControls2.so, libQt5QuickParticles.so, libQt5QuickShapes.so, libQt5QuickTemplates2.so, libQt5QuickTest.so, libQt5QuickWidgets.so, libQt5RemoteObjects.so, libQt5Script.so, libQt5ScriptTools.so, libQt5Scxml.so, libQt5Sensors.so, libQt5SerialBus.so, libQt5SerialPort.so, libQt5ServiceSupport.a, libQt5Sql.so, libQt5Svg.so, libQt5Test.so, libQt5TextToSpeech.so, libQt5ThemeSupport.a, libQt5UiTools.a, libQt5VirtualKeyboard.so, libQt5WaylandClient.so, libQt5WaylandCompositor.so, libQt5WebChannel.so, libQt5WebSockets.so, libQt5WebView.so, libQt5Widgets.so, libQt5X11Extras.so, libQt5XcbQpa.so, libQt5XkbCommonSupport.a, libQt5Xml.so, libQt5XmlPatterns.so, and several plugins under /opt/qt5/{plugins,qml} /usr/include/qt5, /usr/lib/qt5, /usr/share/doc/qt5, and /usr/share/qt5 OR /opt/qt5 and /opt/qt-&qt5-version; Short Descriptions assistant is a tool for presenting on-line documentation. assistant balsam is a tool to convert 3D scenes from various creation tools to QML format, for use by the new QtQuick 3D library balsam canbustil is a tool to deal with arbitrary CAN bus frames. A Controller Area Network (CAN) is a vehicle bus standard designed to allow microcontrollers and devices to communicate with each other in applications without a host computer. canbusutil designer 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 fixqt4headers.pl is a script to replace all Qt 4 style includes with Qt 5 includes. fixqt4headers.pl lconvert is part of Qt5's Linguist tool chain. It can be used as a standalone tool to convert and filter translation data files. lconvert linguist provides support for translating applications into local languages. linguist lrelease is a simple command line tool. It reads XML-based translation file in TS format and produces message files used by the application. lrelease lrelease-pro extracts project information from qmake projects and passes it to lrelease. lrelease-pro lupdate finds the translatable strings in the specified source, header and Qt Designer interface files, and stores the extracted messages in translation files to be processed by lrelease. lupdate lupdate-pro reads a Qt project file, an passes the collected information to lupdate. lupdate-pro meshdebug displays information about qtquick-3d mesh files. meshdebug moc generates Qt meta object support code. moc pixeltool is a desktop magnifier and as you move your mouse around the screen it will show the magnified contents in its window. pixeltool qcollectiongenerator processes and converts Qt help files. qcollectiongenerator-qt5 qdbuscpp2xml takes a C++ source file and generates a D-Bus XML definition of the interface. qdbuscpp2xml qdbus lists available services, object paths, methods, signals, and properties of objects on a bus. qdbus qdbusviewer is a graphical D-Bus browser. qdbusviewer qdbusxml2cpp is a tool that can be used to parse interface descriptions and produce static code representing those interfaces, qdbusxml2cpp qdistancefieldgenerator allows a font cache to be pregenerated for Text.QtRendering to speed up an application's startup if the user interface has a lot of text, or multiple fonts, or a large amount of distinct characters, e.g. in CJK writing systems. qdistancefieldgenerator qdoc is a tool used by Qt Developers to generate documentation for software projects. qdoc qgltf imports a a variety of 3D model formats and exports into fast-to-load, optimized glTF assets embedded into Qt resource files. qgltf qhelpgenerator is a tool used to generate a Qt compressed help file. qhelpgenerator qlalr is a tool used to generate code from grammar specifications. qlalr qmake uses information stored in project files to determine what should go in the makefiles it generates. qmake qml executes a QML file. qml qmlcachegen supports the creation of cache files at build time. qmlcachegen qmleasing is a tool used to define the easing curves using an interactive curve editor. qmleasing qmlimportscanner is a tool used to import QML files from a directory. qmlimportscanner qmllint is a syntax checker for QML files. qmllint qmlmin removes comments and layout characters from a QML file. qmlmin qmlplugindump is a tool to create a qmltypes file. qmlplugindump qmlpreview is a tool used to analyze QML applications. qmlpreview qmlprofiler is a tool which watches QML and JavaScript files on disk and updates the application live with any changes. qmlprofiler qmlscene is a utility that loads and displays QML documents even before the application is complete. qmlscene qmltestrunner is a tool used to make tests. qmltestrunner qscxml converts an input.scxml file to a header and cpp file. qscxmlc qtattributionsscanner processes qt_attribution.json files in Qt sources. qtattributionsscanner qtdiag is a tool for reporting diagnostic information about Qt and its environment. qtdiag qtpaths is a tool to query Qt path information. qtpaths qtplugininfo dumps meta-data about Qt plugins in JSON format. qtplugininfo qtwaylandscanner converts Wayland specfiles to C++ headers and code needed for QtWayland. qtwaylandscanner qvkgen converts Vulkan specfiles to C++ headers and code. qvkgen rcc is a resource compiler used in conjunction with designer. rcc repc is the Replica Compiler, which generates QObject header files based on an API definition file. repc sdpscanner performs a Session Description Protocol scan on a remote device, using the SDP server represented by the local Bluetooth device. sdpscanner syncqt.pl is a script to create the forwarding headers in the include directories. It is an internal development tool. syncqt.pl tracegen is a trace generator for LTTng or ETW. tracegen uic is a Qt user interface compiler. uic xmlpatterns provides support for XPath, XQuery, XSLT, and XML Schema validation. xmlpatterns xmlpatternsvalidator is a tool used to validate XML documents. xmlpatternsvalidator