Qt-5.15.12

Introduksjon til Qt5

Qt5 er et applikasjonsrammeverk på tvers av plattformer som er mye brukt for å utvikle applikasjonsprogramvare med et grafikk brukergrensesnitt (GUI) (i hvilke tilfeller Qt5 er klassifisert som et verktøysett for skjermelementer), og brukes også til å utvikle ikke-GUI programmer som kommandolinjeverktøy og konsoller for servere. To av de store brukere av Qt er KDE Rammeverk 5 (KF5) og LXQt.

Denne pakken er kjent for å bygge og fungere riktig ved å bruke en LFS 12.1 plattform.

Pakkeinformasjon

Ytterligere Nedlastinger

Qt5 Avhengigheter

Påkrevd

Xorg Biblioteker

Anbefalt

Valgfri

BlueZ-5.72 (for sdpscanner, og ved kjøretid for QtConnectivity modulen), GTK+-3.24.41, ibus-1.5.29, libinput-1.25.0, MariaDB-10.11.7 eller MySQL, MIT Kerberos V5-1.21.2, mtdev-1.1.6 pciutils-3.10.0, PostgreSQL-16.2, PulseAudio-17.0, SDL2-2.30.0, unixODBC-2.3.12, Vulkan-Loader-1.3.277, assimp, Flite, Firebird, FreeTDS, libproxy, OpenAL, speech-dispatcher, og tslib

Stille inn installasjonsprefikset

Installere i /opt/qt5

BLFS redaktørene anbefaler å installere Qt5 i en mappe annet enn /usr, dvs /opt/qt5. For å gjøre dette, still inn følgende miljøvariabel:

export QT5PREFIX=/opt/qt5
[Tip]

Tip

Noen ganger er installasjonsbanene hardkodet til installerte filer. Dette er grunnen til at /opt/qt5 brukes som installasjonsprefiks i stedet for /opt/qt-5.15.12. For å lage en versjonert Qt5 mappe, kan du lage en versjonert mappe og en symbolkobling:

mkdir -pv /opt/qt-5.15.12
ln -sfnv qt-5.15.12 /opt/qt5

Senere vil du kanskje installere andre versjoner av Qt5. For å gjøre det, fjern bare symbolkoblingen, opprett den nye versjonsmappen, og lag på nytt /opt/qt5 symbolkoblingen igjen før bygging av den nye versjonen. Hvilken versjon av Qt5 you bruker avhenger bare av hvor symbollinken peker.

[Note]

Note

Hvis qca-2.3.8 er installert og du deretter installere eller oppdatere denne pakken på nytt qca må installeres på nytt.

Installasjon av Qt5

[Warning]

Warning

Hvis Qt5 blir reinstallert i samme mappe som en eksisterende forekomst, kjør kommandoene utført av root, som make install, fra en konsoll eller ikke-Qt5 basert vindusbehandler. Den overskriver Qt5 biblioteker som ikke skal være i bruk under installasjonsprosessen.

[Caution]

Caution

Hvis du ikke installerte noen av de anbefalte avhengighetene, undersøk ./configure --help utdataen for å sjekke hvordan du deaktiverer dem eller bruk interne versjoner samlet i kildens tarball.

[Note]

Note

Byggetiden og plassen som kreves for hele Qt5 er ganske lang. Instruksjonene nedenfor bygger ikke veiledninger og eksemplene. Fjerning av -nomake linjen vil skape et komplett bygg.

[Note]

Note

BLFS redaktørene anbefaler ikke å installere Qt5 inn i /usr hierarkiet fordi det blir vanskelig å finne komponenter og for å oppdatere til en ny versjon. Hvis du ønsker å installere Qt5 i /usr, mappene må spesifiseres eksplisitt. I dette tilfellet setter du QT5PREFIX=/usr og legg til følgende til konfigureringsargumentene nedenfor:

            -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

Nå bruk en oppdatering for å trekke inn rettelsene kurert av kde for disse moduler som kreves av pakker nevnt i denne boken:

patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-kf5-1.patch

Oppdateringen er ment å brukes i et git depot. Ellers vil noen filer som bør endres av configure etter anvendingen av oppdateringen ikke berøres. Heldigvis er det nok å lage en .git mappe i qmake mappen hvor configure skriptet kjøres:

mkdir -pv qtbase/.git

Legg til en annen fiks for å bygge med GCC-13:

sed -e "/pragma once/a#include <cstdint>"                                      \
    -i qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/geometry.hpp \
       qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/string.hpp   \
       qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/gl/stencil_mode.hpp

Rett opp en sikkerhetssårbarhet i qtbase:

patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-security_fix-1.patch

Installer Qt5 ved å kjøre følgende kommandoer:

./configure -prefix $QT5PREFIX                        \
            -sysconfdir /etc/xdg                      \
            -confirm-license                          \
            -opensource                               \
            -dbus-linked                              \
            -openssl-linked                           \
            -system-harfbuzz                          \
            -system-sqlite                            \
            -nomake examples                          \
            -no-rpath                                 \
            -journald                                 \
            -skip qtwebengine                         &&
make

Denne pakken kommer ikke med en testpakke.

Nå, som root bruker:

make install

Fjern referanser til byggemappen fra installert bibliotekavhengighets (prl) filer ved å kjøre følgende kommando som root bruker:

find $QT5PREFIX/ -name \*.prl \
   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

Installer bilder og lag menyoppføringer for installerte applikasjoner. QT5BINDIR variabelen brukes her for å peke på mappen for de kjørbare programmene. Hvis du har endret bindir ovenfor, QT5BINDIR må justeres nedenfor. Vær sikker på at QT5BINDIR variabelen er definert i root sitt miljø og som root bruker:

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

Noen pakker som f.eks VLC-3.0.20 se etter visse kjørbare filer med suffikset -qt5. Kjør følgende kommando som root bruker for å lage de nødvendige symbolkoblingene:

for file in moc uic rcc qmake lconvert lrelease lupdate; do
   ln -sfvn $QT5BINDIR/$file /usr/bin/$file-qt5
done

Parameterforklaringer

-confirm-license: Godta lisens uten å spørre brukeren under konfigurasjonen.

-opensource: Installer åpen kildekode versjonen av Qt.

-nomake examples: Denne bryteren deaktiverer bygging av eksempelprogrammene inkludert i kilden sin tarball. Fjern den hvis du vil bygge dem.

-system-sqlite: Denne bryteren aktiverer bruk av systemversjonen av SQLite.

-dbus-linked -openssl-linked: Disse brytere muliggjør eksplisitt kobling av D-Bus og OpenSSL biblioteker inn i Qt5 biblioteker i stedet for å dlopen()-ing dem.

-journald: Denne bryteren tillater sending av Qt meldinger til journald loggingssystemet.

-skip qtwebengine: Denne bryteren deaktiverer bygging av QtWebEngine. BLFS redaksjonen har valgt å bygge qtwebengine-5.15.17 separat.

-system-harfbuzz: Denne bryteren aktiverer bruk av systemversjonen av Harfbuzz.

Konfigurere Qt5

Konfigurasjonsinformasjon

Hvis Sudo-1.9.15p5 er installert, bør QT5DIR være tilgjengelig for superbrukeren også. Utfør følgende kommandoer som root bruker:

cat > /etc/sudoers.d/qt << "EOF"
Defaults env_keep += QT5DIR
EOF

Hvis du har installert Qt5 i /usr

Hvis du installerte Qt5 i /usr, opprett en miljøvariabel som kreves av visse pakker. Som root bruker:

cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh

QT5DIR=/usr
export QT5DIR

# End /etc/profile.d/qt5.sh
EOF

Hvis du ikke installerte Qt5 i /usr

Hvis du installerte Qt5 på et annet sted enn /usr, må du oppdatere følgende konfigurasjonsfiler slik at Qt5 blir riktig funnet av andre pakker og systemprosesser.

Som root bruker, oppdater /etc/ld.so.conf filen og den dynamiske linkeren sin kjøretids hurtiglagerfil:

cat >> /etc/ld.so.conf << EOF
# Begin Qt addition

/opt/qt5/lib

# End Qt addition
EOF

ldconfig

Som root bruker, opprett /etc/profile.d/qt5.sh filen:

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

Innhold

Installerte Programmer: 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, qmlformat, qmlimportscanner, qmllint, qmlmin, qmlplugindump, qmlpreview, qmlprofiler, qmlscene, qmltestrunner, qmltime, qmltyperegistrar, qscxmlc, qtattributionscanner, qtdiag, qtpaths, qtplugininfo, qtwaylandscanner, qvkgen, rcc, repc, sdpscanner, syncqt.pl, tracegen, uic, xmlpatterns, og xmlpatternsvalidator
Installerte Biblioteker: 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, ibQt5VulkanSupport.a, libQt5WaylandClient.so, libQt5WaylandCompositor.so, libQt5WebChannel.so, libQt5WebSockets.so, libQt5WebView.so, libQt5Widgets.so, libQt5X11Extras.so, libQt5XcbQpa.so, libQt5XkbCommonSupport.a, libQt5Xml.so, libQt5XmlPatterns.so, og flere programtillegg under /opt/qt5/{plugins,qml}
Installerte Mapper: /usr/include/qt5, /usr/lib/qt5, /usr/share/doc/qt5, og /usr/share/qt5 eller /opt/qt5 and /opt/qt-5.15.12

Korte Beskrivelser

assistant

er et verktøy for å presentere nettbasert dokumentasjon

balsam

er et verktøy for å konvertere 3D scener fra ulike opprettelsesverktøy til QML format, for bruk av det nye QtQuick 3D biblioteket

canbustil

er et verktøy for å håndtere vilkårlige CAN bussrammer. Et Controller Area Network (CAN) er en standard for kjøretøybuss for å tillate mikrokontrollere og enheter å kommunisere med hverandre i applikasjoner uten vertsdatamaskin

designer

er en fullverdig GUI bygger. Det inkluderer kraftige funksjoner som forhåndsvisningsmodus, automatisk skjermelement utforming, støtte for egendefinerte skjermelementer og en avansert ressursbehandler

fixqt4headers.pl

er et skript for å erstatte alle Qt 4 stilinkluderere med Qt 5 inkluderere

lconvert

er en del av Qt5s Linguist verktøykjede. Den kan brukes som et frittstående verktøy for å konvertere og filtrere oversettelsesdatafiler

linguist

gir støtte for å oversette applikasjoner til lokale språk

lrelease

er et enkelt kommandolinjeverktøy. Den leser XML basert oversettelsefil i TS format og produserer meldingsfiler som brukes av applikasjonen

lrelease-pro

trekker ut prosjektinformasjon fra qmake prosjekter og sender det til lrelease

lupdate

finner det oversettbare strenger i den angitte kilden, overskriften og Qt Designer grensesnittfiler, og lagrer de utpakkede meldingene i oversettelsesfiler for å bli behandlet av lrelease

lupdate-pro

leser en Qt prosjektfil, og sender den innsamlede informasjonen til lupdate

meshdebug

viser informasjon om qtquick-3d mesh filer

moc

genererer Qt metaobjekt støttekode

pixeltool

er en skrivebordsforstørrelsesglass og mens du beveger musen rundt skjermen vil den vise det forstørrede innholdet i vinduet

qcollectiongenerator

behandler og konverterer Qt hjelpefiler

qdbuscpp2xml

tar en C++ kildefil og genererer en D-Bus XML definisjon av grensesnittet

qdbus

viser tilgjengelige tjenester, objektbaner, metoder, signaler og egenskapene til objekter på en buss

qdbusviewer

er en grafisk D-Bus nettleser

qdbusxml2cpp

er et verktøy som kan brukes til å analysere grensesnittbeskrivelser og produsere statisk kode som representerer disse grensesnittene,

qdistancefieldgenerator

lar en fontbuffer forhåndsgenereres for Text.QtRendering skal øke oppstarthastigheten av en applikasjon hvis brukergrensesnittet har mye tekst, eller flere fonter, eller en stor mengde distinkte tegn, f.eks. i CJK skrivesystemer

qdoc

er et verktøy som brukes av Qt Utviklere til å generere dokumentasjon for programvareprosjekter

qgltf

importerer en rekke 3D modellformater og eksporterer til fast-to-load, optimaliserte glTF ressurser innebygd i Qt ressursfiler

qhelpgenerator

er et verktøy som brukes til å generere en Qt komprimert hjelpefil

qlalr

er et verktøy som brukes til å generere kode fra grammatikkspesifikasjoner

qmake

bruker informasjon som er lagret i prosjektfiler til å bestemme hva som skal gå i makefilene det genererer

qml

kjører en QML fil

qmlcachegen

støtter oppretting av hurtiglagerfiler på byggetidspunktet

qmleasing

er et verktøy som brukes til å definere lettelseskurvene ved hjelp av en interaktiv kurveredigerer

qmlformat

formaterer QML filer i henhold til QML kodingskonvensjonene

qmlimportscanner

er et verktøy som brukes til å importere QML filer fra en mappe

qmllint

er en syntakskontroll for QML filer

qmlmin

fjerner kommentarer og layouttegn fra en QML fil

qmlplugindump

er et verktøy for å lage en qmltypes fil

qmlpreview

er et verktøy som brukes til å analysere QML applikasjoner

qmlprofiler

er et verktøy som overvåker på QML og JavaScript filer på disk og oppdaterer applikasjonen live ved eventuelle endringer

qmlscene

er et verktøy som laster og viser QML dokumenter selv før applikasjonen er komplett

qmltestrunner

er et verktøy som brukes til å lage tester

qscxml

konverterer en input.scxml fil til en deklarasjons og cpp fil

qtattributionsscanner

behandler qt_attribution.json filer i Qt kilder

qtdiag

er et verktøy for å rapportere diagnostisk informasjon om Qt og dens miljø

qtpaths

er et verktøy for å spørre Qt stiinformasjon

qtplugininfo

dumper metadata om Qt programtillegg i JSON format

qtwaylandscanner

konverterer Wayland spesifikasjonsfiler til C++ deklarasjoner og kode nødvendig for QtWayland

qvkgen

konverterer Vulkan spesifikasjoner to C++ deklarasjoner og kode

rcc

er en ressurskompilator som brukes sammen med designer

repc

er en Replica kompilator, som genererer QObject deklarasjonsfiler basert på en API definisjonsfil

sdpscanner

utfører en Øktbeskrivelsesprotokoll skanning på en ekstern enhet, ved å bruke SDP serveren representert av den lokale Bluetooth enheten

syncqt.pl

er et skript for å lage videresendingshodene i include mapper. Det er et internt utviklingsverktøy

tracegen

er en sporgenerator for LTTng eller ETW

uic

er en Qt brukergrensesnitt kompilator

xmlpatterns

gir støtte til XPath, XQuery, XSLT, og XML Skjema validering

xmlpatternsvalidator

er et verktøy som brukes til å validere XML dokumenter