Eseguire deploy di applicazioni Qt su Linux

Mattepuffo's logo
Eseguire deploy di applicazioni Qt su Linux

Eseguire deploy di applicazioni Qt su Linux

Allora, mentre Windows e macOS hanno strumenti appositi per il deploy di applicazioni Qt, Linux no.

Ne ha uno non ufficiale, ma io riscontro sempre problemi.

Quindi sono arrivato ad una procedura che mi funziona; vi premetto che è un pò rozza, ma se funziona va bene così.

Prima di tutto, eseguite una compilazione in modalità Release e copiate il binario dentro ad una cartella vuota (cosi non ci impicciamo).

Spostatevi nella cartella e digitate questi comandi:

$ mkdir lib
$ ldd BINARIO | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' $PWD/lib

Questo copierà le dipendenze dirette dentro alla cartella lib.

Ma non basta, perchè molte di quelle dipendenze, hanno bisogno di altre librerie.

Quindi create uno script come questo:

#!/bin/bash

for filename in lib/*; do
  echo $filename
  ldd $filename | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' lib/
done

Questo non fa altro che usare il comando dato sopra per tutte le librerie già copiate.

Siccome la stessa problematica potremmo averla anche per quelle nuove, vi conviene:

  • vedere quanti files ci stanno nella cartella lib
  • rilanciare lo script sopra fino a quando il numero non varia (io l'ho lanciato due volte)

Se avete un'applicazione usate i database create una cartella sqldrivers, e spostate i drivers la dentro.

Ad esempio io uso SQLite e dentro ci ho messo libqsqlite.so.

Fatto questo, create uno script di lancio come questo:

#!/bin/bash

LD_LIBRARY_PATH=$PWD/lib
QT_QPA_PLATFORM_PLUGIN_PATH=$PWD/lib

export LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH

./BINARIO

Dove BINARIO è la vostra applicazione.

In questo modo, il programma si andrà a cercare librerie e plugins dentro alla cartella lib.

A me questa modalità ha funzionato, anche se ammetto che è un pò rozza.

Si accettano suggerimenti ovviamente!

Enjoy!


Condividi

Commentami!