2013-03-11 20 views
12

Pracowałem z Qt Creator 2.6.2 na podstawie Qt 5.0.1 w środowisku Linux. Aplikacja działa poprawnie na komputerze, na którym zrobiłem kompilację ale kiedy go uruchomić na innym komputerze mam błędy jak:Jak zbudować Qt 5 statycznie

error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory 
error while loading shared libraries: libxslt.so.1: cannot open shared object file: No such file or directory 

znalazłem kilka rozwiązań w tym link (niektóre linki są martwe).

Więc dodałem do mojego .pro pliku wiersz:

CONFIG += static 

Aby skompilować mój projekt statycznie.

Myślałem, że plik, który dostanę, będzie większy, ale mam ten sam rozmiar i te same błędy.

Dziękuję.

+3

Musisz zbudować statyczną kompilację Qt w celu statycznego skompilowania projektu. – dtech

+3

Pamiętaj o problemach związanych z licencjonowaniem. – cubuspl42

+1

Złap źródło i zbuduj z '' './configure -static -release'''' –

Odpowiedz

9

Udostępniane biblioteki Qt nie istnieją na innym komputerze, na którym je przetestowano. Musisz więc:

  1. Skopiuj udostępnione biblioteki na inny komputer. Lub ...
  2. Utwórz statyczną kompilację Qt do połączenia z aplikacją.

Nie wystarczy po prostu dodać CONFIG += static do pliku .pro, potrzebne są również statyczne biblioteki Qt. Aby zrobić # 2, musisz pobrać kod źródłowy Qt i zbudować go samodzielnie.

Ponadto Qt jest objęty licencją LGPL, więc musisz być tego świadomy podczas łączenia statycznego. Są tacy, którzy wierzą, że LGPL nie pozwala na statyczne łączenie (chyba że LGPL ma własny kod) i innych, którzy wierzą, że to robi (o ile jesteś gotów zwolnić kod obiektowy dla twojej aplikacji). Ale to zupełnie inna dyskusja.

+4

Bez względu na to," w co niektórzy wierzą ", zgodnie z warunkami licencji LGPL, którą sam możesz przeczytać [tutaj] (http://www.gnu.org/licenses/lgpl.html) można łączyć statycznie, pod warunkiem, że użytkownik ma możliwość swobodnego łączenia się ze sobą. Sekcja 4 (d) (0) jest jasna w tym punkcie. – JBentley

+0

@JBentley Przepraszam za późną odpowiedź ... Zdaję się całkowicie zgadzać z tobą, ale inne osoby, które spotkałem, uważają inaczej, niezależnie od tego, co mówi tekst licencji. – Cutterpillow