Czy istnieje sposób kompilacji programów Qt5 napisanych w języku c ++ do Ubuntu Touch?


9

Tworzę program z Qt5 i C ++ i chciałbym skompilować swój program dla Ubuntu Touch Preview lub Ubuntu na ramię.

Używam tych systemów na Nexusie 7. Znalazłem odpowiedni kompilator C ++ ( arm-linux-gnueabihf-g++), ale jak mogę uruchomić Qt5?


Jeśli odpowiedź @David Planella rozwiązała problem, należy oznaczyć go jako „zaakceptowany”.
Fouric

Odpowiedzi:


11

Łatwa droga

Możesz użyć eksperymentalnej funkcji Ubuntu SDK Alpha. Piękno tego polega na tym, że nie trzeba kompilować krzyżowo.

Najpierw połącz się z urządzeniem:

  1. Podłącz urządzenie do portu USB komputera
  2. Uruchom Qt Creator
  3. Kliknij kartę urządzeń
  4. Kliknij przycisk Włącz, aby włączyć tryb programisty
  5. Przejdź do Narzędzia> Ubuntu> Urządzenie> Włącz> Kompilacja CPP na urządzeniu Ubuntu (eksperymentalna)

Następnie zacznij hakowanie:

  1. Otwórz projekt aplikacji w Qt Creator
  2. Przejdź do Kompilacja> Ubuntu> Kompilacja projektu C ++ na urządzeniu Ubuntu (eksperymentalna)

Budowanie projektów C ++ Touch na urządzeniu

I gotowe! :-)

Jeśli lubisz wyzwania

Można ręcznie skompilować aplikacje na urządzeniu. Możesz spróbować wykonać następujące (nieprzetestowane) kroki:

  1. SSH do urządzenia z uruchomioną wersją zapoznawczą Ubuntu Touch Developer Preview
  2. Zainstaluj wymagane pakiety programistyczne. W zależności od potrzeb może być konieczne dodanie pakietów do listy, ale oto pierwszy zrzut:

    sudo apt-get install qt5-default qtbase5-dev libqt5v8-5-dev qtdeclarative5-dev libqt5xmlpatterns5-dev qtscript5-dev qttools5-dev qt3d5-dev qtmultimedia5-dev libqt5svg5-dev qtdeclarative5-dev-tools qttools5-dev-tools qtlocation5-dev qtsensors5-dev qtpim5-dev qt-components-ubuntu

  3. Zbuduj swoją aplikację C ++ z wybranym systemem kompilacji (cmake, qmake itp.)


Wielkie dzięki za odpowiedź! Spróbuję tego z Ubuntu SDK. Na szczęście Nexus 7 jest urządzeniem o pełnej mocy, przetestowałem drugi sposób i działa również dobrze.
Johannes

Na szczęście Nexus 7 jest urządzeniem z pełną mocą, przetestowałem drugi sposób z ramieniem Ubuntu i działa dobrze, ale Ubuntu Touch Developer Preview nie znajduje tych pakietów deweloperskich.
Johannes

David: Próbuję to zrobić, ale dla każdego żądanego elementu pojawia się komunikat „Nie można znaleźć paczki”. Pracuję na Pandaboard z Ubuntu 12.40. Możesz mi pomóc?
HMarioD,

3

Jest jeszcze jedna sugestia (trzeci sposób, ale trudny):
1. pobierz linaro toolchain dla armhf
2. pobierz libhybris i platformę API (od phablet-team na launchpad.net )
3. pobierz dynamiczne lib z urządzenia ( / lib / arm- linux-gnueabihf i / usr / lib / arm-linux-gnueabihf / )
4. łatka mkspecs dla qmake
5. kompilacja
6. dodaj plik <your_app> .desktop do / usr / share / applications /
7. dodaj linie do / usr / share / qml-phone-shell / Applications / applications.js (myślę, że może być opcjonalny)
8. wypchnij swoją aplikację i zasoby
9. zrestartuj powłokę lub telefon
10. Twoja działająca aplikacja! (Przetestowałem to!)


1

Rozszerzona instrukcja oparta na poprzedniej odpowiedzi. Pamiętaj: ta instrukcja opisuje tworzenie Qt / Qml na PC dla Ubuntu Touch bez połączenia ssh z urządzeniem i wymaga narzędzia do kompilacji krzyżowej, takiego jak linaro.

CZĘŚĆ 1: Tworzenie środowiska

  1. Pobierz Ubuntu SDK
  2. Pobierz zestaw narzędzi: Linaro lub wia sudo apt-get install gcc-arm-linux-gnueabihf zainstaluj zestaw narzędzi i jego zależności.
  3. Zdobądź te dwie biblioteki libhybris i platformę API oraz biblioteki Qt5 dla armhf (można je uzyskać z urządzenia) lub po prostu pobierz plik tarball ze wszystkimi bibliotekami lib (z tarball potrzebujesz bibliotek lib i nagłówków, umieść je w katalogu / usr / arm-gnueabihf / lib i / usr / arm-gnueabihf / include ).
  4. Pobierz zmodyfikowaną konfigurację qmake - rozpakuj ją w mkspecs (na przykład, kop w / usr / share / qt5 / mkspecs / ). Wewnątrz katalogu na podczerwień - qmake.conf . Jeśli czegoś brakuje podczas kompilacji - należy zmienić zmienną ścieżki w tym pliku.
  5. Dla Qt Creator utwórz nowy profil kompilacji: w Ustawieniach kompilacji i wdrażania , w zakładce Kompilator - dodaj nowy kompilator ( arm-linux-gnueabihf-gcc ), w zakładce Narzędzia - dodaj nowy profil i określ Typ urządzenia - Ogólne urządzenie linux, Kompilator - te, do których dodano Ci Profil Qt - ogólny (używam nieskompilowanej Qt !!!), Qt mkspec - linux-arm-gnueabihf-gcc. To wszystko, czego potrzebujesz do kompilacji. Do debugowania - należy określić inne parametry. A poza tym lepiej skompiluj Qt ze źródeł. Ale jestem leniwy, więc)

CZĘŚĆ 2: wdrażanie aplikacji

  1. Wia adb push / data / ubuntu / <some_path> aplikacja i zasoby push. System operacyjny może je znaleźć w / <some_path> . Uwaga: nie ma części / data / ubuntu . Ta część jest potrzebna tylko przez adb .
  2. Następnie należy utworzyć plik <nazwa_aplikacji> .desktop :
    • root adb
    • powłoka adb
    • ubuntu_chroot shell - przełącz na bash na urządzeniu
    • cd / usr / share / applications - przejdź do folderu z plikami * .desktop
    • Skopiuj dowolny z nich i edytuj (za pomocą vi ) do celów swojej aplikacji (nazwa, ikona, ścieżka itp.)
  3. Następny krok, taki sam jak poprzedni (jesteś już w bash na urządzeniu):
    edytuj plik (z vi ) /usr/share/qml-phone-shell/Applications/applications.js , dodaj część do swojej aplikacji w pliku, tak samo jak inne aplikacje mieć w tym pliku. Musi być taki sam jak w pliku <nazwa_aplikacji> .desktop
  4. Uruchom ponownie powłokę (zabijając proces qml-phone-shell ) lub uruchom ponownie telefon ( zrestartuj -p )
  5. Teraz możesz uruchomić aplikację ze strony aplikacji !

Przykład testu i oryginalne materiały: instrukcja EN i instrukcja RU z linkami do pliku narzędzi do pobierania i niezbędnych bibliotek.


Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
RolandiXor
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.