2010-12-06 18 views
6

Zrobiłem małą aplikację i zbudowałem wersję Release. Teraz chcę przesłać go do mojej witryny. Nigdy nie robiłem tego wcześniej z Qt, więc nie jestem pewien, co powinienem dołączyć wraz z binariami.Czego ludzie potrzebują, aby uruchomić moją aplikację?

Jak mogę się dowiedzieć, które pliki DLL powinny być dołączone do mojej aplikacji? I gdzie je mam? Używam systemu Windows, ale chciałbym też wiedzieć, co powinienem zrobić, gdybym chciał wydać wersję Linuksa.

+3

Dla systemu Linux wystarczy podać im źródło i pozwolić im je skompilować. – Falmarri

+3

@Falmarri: Taki pogląd ideologiczny. Jestem pewien, że doskonale zdajesz sobie sprawę, że często nie jest to możliwe. – Goz

+0

@Goz: Niepożądane ... –

Odpowiedz

9

dla systemu Windows:

Można użyć Dependency Walker, aby zobaczyć, jakie biblioteki Qt (lub inne) należy wysyłać. Jest to plik wykonywalny depends.exe dołączony do programu Visual Studio, ale można go pobrać oddzielnie od: http://www.dependencywalker.com/

Załaduj do niego swoją aplikację, a wyświetli listę wszystkich modułów, których oczekuje w czasie wykonywania. Może być również konieczne wysłanie Redystrybucyjnego środowiska wykonawczego Visual C++ zgodnego z kompilatorem, dla którego zbudowano plik wykonywalny (jeśli jest to VC++).

Należy zauważyć, że program uruchamiający zależności nie uwzględnia takich rzeczy, jak wtyczki Qt. Przykładem może być system QtAssistant (dla funkcji menu typu help), który na Qt4 opiera się na funkcjonalności sqlite Qt, która jest zwykle budowana jako wtyczka (qtsqlite4.dll, jeśli pamiętam).

Dla systemu Linux:

To jest trudniejsze z powodu szerszych dysproporcji w dystrybucji Linuksa. Możesz oczywiście użyć systemu kompilacji GNU, jeśli chcesz wysłać źródło, ale jeśli wysyłasz pliki binarne i chcesz obsługiwać różne dystrybucje, możesz zrobić najlepiej, aby zbudować pakiety dla każdej platformy, na której chcesz wydać.


W mojej przeszłości, firma pracowałem włączony do korzystania cmake i po skonfigurowaniu cały projekt i budować pliki używane do generowania że buduje i pakiety dla różnych systemów operacyjnych. W Windowsie oznaczało to podłączenie do Inno Setup, a dla systemów uniksowych cmake wie, jak generować rzeczy takie jak instalowalne skrypty powłoki. Zdecydowanie znacznie ułatwiono życie .


Nasz dział QA będzie testować nasze oprogramowanie w przypadkach wirtualnych maszyn z obsługiwanych platform, całkowicie czyste, i zobaczyć, czy coś brakowało.

+0

Świetna odpowiedź, precyzyjna i na temat. –

+0

depends.exe otrzyma statyczne zależności, ale nie dynamiczne (jawne wywołania metody GetProcAddress). Jeśli istnieją zależności na MSVCRT, to staje się to dość skomplikowane - w zasadzie musisz wysłać redystrybucję. Nie możesz połączyć statycznie, a nie z bibliotekami DLL Qt. Uproścenie dystrybucji jest o wiele prostsze. –

+0

Ponadto, z mojego doświadczenia wynika, że ​​opłaca się to poprawnie (czytając podręczniki bibliotek), a nie inżynieria odwrotna, która ma tendencję do zawierania testów na platformie, na której nie testowałeś (lub nie istniała, gdy redystrybuujesz) . –

2

Jeśli mówisz o bibliotekach DLL, zakładam, że chodzi o system Windows. Aby uzyskać informacje o zależnościach DLL, należy użyć Dependency Walker.

Albo ... weź czysty system, bez zainstalowanych narzędzi programistycznych i umieść plik wykonywalny, spróbuj go uruchomić i zobacz, jakie pliki DLL są zgłaszane jako niezbędne i nieistniejące. Umieść pliki DLL w pobliżu pliku wykonywalnego.

0

W przypadku wersji dla systemu Linux można utworzyć przeznaczone dla platformy wydania instalatorów dla każdego rozwidlenia systemu Linux lub pozwolić użytkownikom na kompilację ze źródła. Jeśli Twoja aplikacja jest nowa, jedynym sposobem na uzyskanie dostępu jest udostępnienie ludziom gotowych instalatorów, wybranych instalatorów. Nowi użytkownicy nie znoszą kompilacji pakietów ze źródeł.

Możesz najpierw wypróbować pakiety debian (.deb) i redhat (.rpm). Te dwie są bardzo popularnymi liniami i pozwolą ci posmakować rzeczy.

Powiązane problemy