QT - kompilacja statyczna

0

Witam.
Kolejny problem z QT na win8.
Chciałbym zbudować swoją aplikację do samowystarczającego pliku exe z dll'ami w folderze z nim. Na stronie Nokii jest do tego tutorial (http://doc.qt.digia.com/4.7/deployment-windows.html). Jednak mam problem w czasie samej kompilacji (polecenie make sub-src). W terminalu widnieje błąd: undefined reference to __dyn_tls_init_callback.
Próbowałem szukac w internecie, ale zdaje się, że problem rozwiązywała aktualizacja kompilatora. Używam MinGw, jeszcze dzisiaj instalowałem wersję z najnowszymi bibliotekami ściąganymi z repozytorium.
Korzystam z Qt w wersji 4.8.2 (jeszcze od Nokii). Make to GNU Make 3.81.
Wygrał ktoś z takim błędem?
Dzięki z góry za pomoc.

0

QT != Qt

Jeśli chcesz mieć plik exe z plikami dll to nie potrzebujesz kompilacji statycznej. Kompilacja statyczna polega na tym, że cały kod, ten z bibliotek też jest scalany do jednego pliku exe.

0

Próbowałeś skorzystać z QtCreator'a?

0

Generalnie piszę w QtCreatorze. Próbowałem zaciągnąć do roboty eclipse, ale niestety nie udało mi się to. Anyway, jak to zrobić w QtCreatorze?

Według linku do strony digii kompilacja z kilkoma dll'ami jest kompilacją statyczną, więc ktoś mnie wprowadza w błąd :< Niemniej, semantyka nie pomaga mi w tym momencie w żaden sposób.

1

Taaa... eclipse, NetBeans... może Visual Studio? Najlepiej QtCreator. Pytanie jest co chce osiągnąć wątkotwórca, bo już nie wiem. Chce skompilować swój program statycznie, tak by nie dostarczać exe z dll? Chce skompilować Qt statycznie? Czy może ma problem ze zlinkowanym dynamicznie exe do którego nie potrafi dobrać plików dll by aplikacja ruszyła na innym komputerze?

0

Problem w tym, żeby uruchomić program z Qt na komputerze, który tego Qt nie ma.
Konkluzja jest taka, że wystarczy dokleić pliki dll. Niestety, w tutorialu podanym wcześniej nikt nie napisał, że wystarczy przekopiować te pliki z SDK, także tutorial jest bez sensu dla nowicjuszy.
Sam problem wynika prawdopodobnie z tego, że Qt 4.8.1 nie jest wspierane na win 8 i stąd błędy. Na maszynie wirtualnej i Win XP kompilacja ruszyła.
Pomijając fakt, że proces jest śmiesznie prosty, to nie wiem dlaczego mój program wymaga bibliotek Xml, Sql, Network, Declaraive, Script i XmlPatterns. To już tak poza konkursem.

0

Pomijając fakt, że proces jest śmiesznie prosty, to nie wiem dlaczego mój program wymaga bibliotek Xml, Sql, Network, Declaraive, Script i XmlPatterns.

Bo Qt jest strasznie zbloatowane [zabloacone? zabłocone? ;-)].
Wyjścia masz dwa:

  1. pogodzić się z tym,
  2. dać se spokój z Qt.
0

Być może nie będzie musiał się z tym godzić i sobie dawać spokoju z Qt... Spróbuj uruchomić www.jason.o12.pl/program.zip - tam jest statycznie wkompilowane Qt. Jak Ci się uruchomi, to napiszę jak to jest zrobione :)

0

No właśnie nie do końca. Program powinien ruszyć z 2-ma bibliotekami: QtCore i QtGui, co w poprzedniej wersji programu miało miejsce. Eh, tak to jest, jak elektronik musi programować. :(

1

raczej trudno wspierać coś co jeszcze nie wyszło oficjalnie, więc to, że masz problemy z Windows 8 to raczej nie jest zaskoczenie. Nie ma gwarancji, że Customer Preview będzie w pełni kompatybilne z oficjalną wersją.
Co do samego qt4, to domyślne dll-k Qt zawierają tonę rożnych rzeczy, których się nie używa, łącznie z grafikami dla różnych wersji systemów (większość aplikacji można uruchomić z odpowiednią opcją i będą wyglądać np jak iOS).
Można użyć narzędzie, które przytnie Qt do twoich potrzeb i znacznie zmniejszy liczbę i masę potrzebnych dll-ek, ale wymaga to rekompilacji Qt. Widziałem, gdzieś graficzne narzędzie do tego, ale teraz nie mogę znaleźć, tu jest z linii poleceń.
To, że twój program wymaga Xml, Sql, Network, Declaraive, Script i XmlPatterns to musi być wynik błędu w pliku projektu (*.pro). Coś za dużo dołączyłeś do zmiennej CONFIG lub do QT.

0

Może brakuje plików dll od kompilatora? Najlepiej by wątkotwórca potraktował wszystkie skompletowane pliki programem Dependency Walker, by zobaczyć jakich zależności mu jeszcze brakuje. No i jak @MarekR22 napisał - sprawdzić należy zmienne w pliku .pro. @quniq najlepiej będzie jak wkleisz swój .pro.

1 użytkowników online, w tym zalogowanych: 0, gości: 1