Puncte:1

Adăugarea de biblioteci la un nou computer Linux pentru orice aplicație scrisă în Qt 5.15

drapel ar

Captură de ecran a aplicației mele
Am scris o aplicație (creator de lansare ca Linux Mint) în Qt 5.15.2 versiune. Am terminat dezvoltarea și totul a fost ok.
Apoi, am vrut să verific dacă funcționează la orice computer fără Qt instalat.

Pentru asta, am verificat dependenţă a fișierului aplicației de pe computerul meu (Ubuntu 20.04 LTS) cu ldd comandă ca mai jos

ldd LauncherCreator

rezultat:

    linux-vdso.so.1 (0x00007ffe2c7a9000)
    libQt5Widgets.so.5 => /opt/Qt/5.15.2/gcc_64/lib/libQt5Widgets.so.5 (0x00007f2d1eae1000)
    libQt5Gui.so.5 => /opt/Qt/5.15.2/gcc_64/lib/libQt5Gui.so.5 (0x00007f2d1e1b0000)
    libQt5Core.so.5 => /opt/Qt/5.15.2/gcc_64/lib/libQt5Core.so.5 (0x00007f2d1d9ba000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2d1d7c6000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2d1d7ab000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2d1d5b9000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2d1d594000)
    libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007f2d1d50c000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2d1d3bd000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f2d1d3a1000)
    libicui18n.so.56 => /opt/Qt/5.15.2/gcc_64/lib/libicui18n.so.56 (0x00007f2d1cf08000)
    libicuuc.so.56 => /opt/Qt/5.15.2/gcc_64/lib/libicuuc.so.56 (0x00007f2d1cb50000)
    libicudata.so.56 => /opt/Qt/5.15.2/gcc_64/lib/libicudata.so.56 (0x00007f2d1b16b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f2d1b165000)
    libgthread-2.0.so.0 => /lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f2d1b160000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f2d1b037000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2d1f35c000)
    libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f2d1af7f000)
    libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f2d1af49000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f2d1aed6000)
    libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f2d1ad99000)
    libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f2d1ad6f000)
    libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f2d1ad69000)
    libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f2d1ad5f000)
    libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f2d1ad45000)

Pentru a rezolva această problemă, am copiat doar bibliotecile care au apărut mai sus legate de Qt și am lipit într-un folder nou numit lib.
Am scris un script de instalare pentru alte computere pentru a descărca bibliotecile necesare și a instala corect. (Poate că adevărata problemă este aici. Atenție la PASUL 4)

#!/bin/bash

sudo echo -----------------------------

# instalați libGL
ecou ------------------------------
echo „PASUL 1: instalați libGL”
ecou
sudo apt install libgl1-mesa-dev -y

# creați folderul aplicației
ecou ------------------------------
echo „PASUL 2: creați folderul aplicației”
ecou
cd /opt/
sudo rm -r LauncherCreator
sudo mkdir LauncherCreator
cd LauncherCreator
sudo mkdir lib

# intrați în folderul temporar
cd ~/Desktop/temp_LauncherCreator

# schimbați modul în executabil
chmod +x ~/Desktop/temp_LauncherCreator/BUILD/LauncherCreator
chmod +x ~/Desktop/temp_LauncherCreator/uninstall_LauncherCreator.sh

# copiați fișierele în folderul aplicației
ecou ------------------------------
echo „PASUL 3: dosarul aplicației de copiere a fișierelor”
ecou
sudo cp ~/Desktop/temp_LauncherCreator/BUILD/LauncherCreator /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/LauncherCreator/rocket.ico /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/currentVersion /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/uninstall_LauncherCreator.sh /opt/LauncherCreator
sudo cp ~/Desktop/temp_LauncherCreator/lib/* /opt/LauncherCreator/lib/

# creați linkuri
ecou ------------------------------
echo „PASUL 4: creați linkuri pentru lib”
ecou
cd /opt/LauncherCreator/lib
sudo ln -s libicudata.so.56.1 libicudata.so.56
sudo ln -s libicudata.so.56 libicudata.so
sudo ln -s libicui18n.so.56.1 libicui18n.so.56
sudo ln -s libicui18n.so.56 libicui18n.so
sudo ln -s libicuuc.so.56.1 libicuuc.so.56
sudo ln -s libicuuc.so.56 libicuuc.so
sudo ln -s libQt5Core.so.5.15.2 libQt5Core.so.5.15
sudo ln -s libQt5Core.so.5.15 libQt5Core.so.5
sudo ln -s libQt5Core.so.5 libQt5Core.so
sudo ln -s libQt5Gui.so.5.15.2 libQt5Gui.so.5.15
sudo ln -s libQt5Gui.so.5.15 libQt5Gui.so.5
sudo ln -s libQt5Gui.so.5 libQt5Gui.so
sudo ln -s libQt5Widgets.so.5.15.2 libQt5Widgets.so.5.15
sudo ln -s libQt5Widgets.so.5.15 libQt5Widgets.so.5
sudo ln -s libQt5Widgets.so.5 libQt5Widgets.so

# copiați lansatorul în /usr/share/applications/
ecou ------------------------------
echo „PASUL 5: lansatorul de copiere”
ecou
chmod +x ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop
sudo cp ~/Desktop/temp_LauncherCreator/Launcher_Generator.desktop /usr/share/applications/

# eliminați folderul temporar
ecou ------------------------------
echo „PASUL 6: eliminați folderul temporar”
ecou
sudo rm -r ~/Desktop/temp_LauncherCreator

# actualizați aplicațiile
ecou ------------------------------
echo „PASUL 7: actualizați aplicațiile”
ecou
sudo apt install update -y

####
ecou
ecou „OK”
ecou
ecou '-----------------------------'
ecou „Bunyamin TAMAR”
echo „linkedin.com/in/bunyamintamar”
ecou „decembrie 2021”
ecou '-----------------------------'
ecou
somn 5
/opt/LauncherCreator/LauncherCreator
Ieșire

Acesta este al meu pro fişier:

QT += core gui
higherThan(QT_MAJOR_VERSION, 4): widget-uri QT +=
CONFIG += c++11
SURSE += $$fișiere("*.cpp", false)
HEADERS += $$fișiere("*.h", false)
FORMULE += $$fișiere("*.ui", false)
RESURSE += $$fișiere("*.qrc", false)

Această aplicație funcționează perfect în computerul meu cu Qt 5.15. Dar, la celălalt computer (Ubuntu 20.04 LTS), nu merge.

Cum pot rezolva această problemă?

De asemenea, puteți vedea aceste fișiere pe contul meu GitHub. Dacă rezolv această problemă, voi distribui această aplicație pe blogul meu.
(numai numele aplicației este diferit)

guiverc avatar
drapel cn
Nu ați furnizat detalii despre sistemul de operare și versiunea... Qt 5.15 este disponibil pentru unele versiuni în mod implicit; dar alte versiuni folosesc alte versiuni
guiverc avatar
drapel cn
Răspunde asta la întrebarea ta? [De ce depozitele Ubuntu nu au cele mai recente versiuni de software?](https://askubuntu.com/questions/151283/why-dont-the-ubuntu-repositories-have-the-latest-versions-of-software )
N0rbert avatar
drapel zw
Dezvoltarea de aplicații pentru distribuția în masă folosind Qt distribuit binar este o idee proastă. Crearea aleatorie de linkuri simbolice este de asemenea o idee proastă. Trebuie să alegeți platforma țintă și să utilizați versiunea sa Qt.De exemplu, 20.04 LTS are [5.12](https://packages.ubuntu.com/source/focal/qtbase-opensource-src). Sau chiar mai mic pentru a suporta 18.04 LTS. Aplicația dvs. arată grozav, dar va funcționa normal cu versiunea Qt mai veche. Vă rugăm să nu creați probleme pentru utilizatorii aplicației dvs. Următorul pas pentru a face acest lucru corect este să creați PPA pentru a compila pachete deb pentru versiunile Ubuntu acceptate în prezent.
Bunyamin avatar
drapel ar
Mulțumesc pentru sfat. Îmi voi compila aplicația cu **5.12** și voi verifica dacă funcționează corect. Dacă Ä°t este OK, îl voi distribui pentru uz general.
Puncte:2
drapel zw

Dezvoltarea de aplicații pentru distribuția în masă folosind Qt distribuit binar este o idee proastă. Crearea aleatorie de linkuri simbolice este de asemenea o idee proastă. Trebuie să alegeți platforma țintă și să utilizați versiunea sa Qt. De exemplu 20.04 LTS are 5.12. Sau chiar mai mic pentru a suporta 18.04 LTS. Aplicația dvs. arată grozav, dar va funcționa normal cu versiunea Qt mai veche. Vă rugăm să nu creați probleme pentru utilizatorii aplicației dvs. Următorul pas pentru a face acest lucru corect este să creați PPA pentru a compila pachete deb pentru versiunile Ubuntu acceptate în prezent.

De asemenea, vă rog să nu mă înțelegeți greșit, dar deja am făcut-o doi maturi aplicații în scopul menționat - vezi:

  • mate-desktop-element-edit din mate-panou pachet:

    mate-desktop-element-edit

  • exo-desktop-item-edit din exo-utile pachet:

    exo-desktop-item-edit

Sunt buni înlocuitori pentru cele disponibile anterior gnome-desktop-item-edit aplicație de la panou-gnomi pachet (vezi acest Q&A pentru detalii despre istoria sa).

Bunyamin avatar
drapel ar
Sunt de acord cu tine. Dar, de fapt, am vrut să învăț să adaug bibliotecile necesare. Această aplicație este doar o aplicație obișnuită.
Bunyamin avatar
drapel ar
Din păcate, această aplicație nu este disponibilă pentru Ubuntu 20.04 conform cercetărilor mele
N0rbert avatar
drapel zw
Atât desktop-item-edit pentru MATE, cât și Xfce (Exo) sunt disponibile pentru 20.04 LTS - vezi [acest link](https://packages.ubuntu.com/search?suite=focal&arch=amd64&searchon=contents&keywords=desktop-item-edit) ). gnome-desktop-item-edit [este disponibil](https://packages.ubuntu.com/search?suite=bionic&arch=amd64&searchon=contents&keywords=desktop-item-edit) numai pentru 18.04 LTS, este adevărat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.