Wykop.pl Wykop.pl
  • Główna
  • Wykopalisko208
  • Hity
  • Mikroblog
  • Zaloguj się
  • Zarejestruj się
Zaloguj się

Popularne tagi

  • #ciekawostki
  • #informacje
  • #technologia
  • #polska
  • #swiat
  • #motoryzacja
  • #podroze
  • #heheszki
  • #sport

Wykop

  • Ranking
  • Osiągnięcia
  • FAQ
  • O nas
  • Kontakt
  • Reklama
  • Regulamin

441

Instalacja Qt 5.6 na Raspberry Pi

Instalacja Qt 5.6 na Raspberry Pi

Pokażę jak poprawnie przygotować sobie środowisko i narzędzia do pisania programów z wykorzystaniem bibliotek Qt na popularnej platformie Raspberry Pi. Ten artykuł jest przeznaczony tylko dla nerdów, jeśli nie wiesz o co chodzi już w tytule, to nie czytaj dalej...

QBA__
QBA__
z
wykop.pl
dodany: 18.03.2016, 22:15:18
  • #
    linux
  • #
    programowanie
  • #
    raspberrypi
  • #
    gruparatowaniapoziomu
  • #
    zainteresowania
  • #
    protip
  • 123
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Pokażę jak poprawnie przygotować sobie środowisko i narzędzia do pisania programów z wykorzystaniem bibliotek Qt na popularnej platformie Raspberry Pi. Ten artykuł jest przeznaczony tylko dla nerdów, jeśli nie wiesz o co chodzi już w tytule, to nie czytaj dalej ( ͡° ͜ʖ ͡°)

Ponieważ kompilacja ze źródeł bibliotek Qt na "malinie" potrwałaby pewnie z tydzień, znacznie lepszą opcją będzie dokonanie kompilacji skrośnej na PC, podobnie sprawa ma się z czasami budowania programów na PC jest szybciej i wygodniej.

Poniżej przedstawiłem schemat do którego dążymy:



Piszemy nasze programy na PC korzystając z Qtcreatora - IDE dołączonego do bibliotek Qt. Kompilacja programów dla Raspberry Pi również odbywa się na PC, a dopiero wynikowy plik binarny zostaje wysłany i uruchomiony automatycznie na samej malinie.

No więc zaczynamy:
_
1. Potrzebujemy komputera z zainstalowaną dowolną dystrybucją Linuksa, ja używam aktualnie Ubuntu GNOME 15.10, ale podawane komendy powinny działać identycznie na każdej dystrybucji bazującej na Debianie.
_
2. Potrzebny nam będzie czysty i świeży obraz najnowszego raspbiana- najpopularniejszej dystrybucji Linuksa na platformę Raspberry Pi. Ściągamy go stąd: https://downloads.raspberrypi.org/raspbian_latest

Wkładamy kartę micro SD do czytnika w naszym komputerze i wydajemy komendę:

lsblk

w odpowiedzi powinniśmy dostać drzewko z wszystkimi dyskami podłączonymi do naszego komputera, najbardziej interesuje nas identyfikator karty powinno to być coś w stylu:

mmcblk0 179:0 0 7,2G 0 disk
_
3. Wchodzimy z poziomu konsoli do katalogu gdzie pobraliśmy obraz Raspbiana i wydajemy ulubione polecenie naszego byłego prezydenta ( ͡° ͜ʖ ͡°) kopiując obraz systemu na kartę, której identyfikator odczytaliśmy punkt wyżej:

sudo dd if=2016-02-26-raspbian-jessie.img of=/dev/mmcblk0 bs=4M

Kopiowanie trochę trwa- nawet kilkanaście minut, można w tym czasie pooglądać śmieszne obrazki na ulubionym portalu ze śmiesznymi obrazkami.
_
4. Po zakończeniu kopiowania wkładamy naszą kartę do maliny i uruchamiamy nasz nowiuteńki system. Używając raspi-config włączamy bootowanie do samej konsoli bez uruchamiania Xów(Boot Options -> Console), oraz przydzielamy 256 MB RAM dla GPU(Advenced Options -> Memory Split -> 256MB)
Następnie odblokowujemy repozytoria non-free

sudo nano /etc/apt/sources.list

Odkomentowując linię

deb-src //archive.raspbian.org/raspbian/ jessie main contrib non-free rpi
_
4.76 instalujemy kilka potrzebnych bibliotek:

sudo apt-get update
sudo apt-get build-dep qt4-x11
sudo apt-get build-dep libqt5gui5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev

oraz tworzymy i przydzielamy do użytkownika pi katalog na nasze biblioteki

sudo mkdir /usr/local/qt5pi
sudo chown pi:pi /usr/local/qt5pi
_
5. Wracamy do PC'ta....
Przygotowujemy sobie katalog na biblioteki oraz toolchain dla naszej maliny(nie musi koniecznie być w katalogu domowym, można gdzieś indziej, ale w kolejnych krokach należy zwrócić uwagę na ścieżki do plików)

mkdir ~/raspi
cd ~/raspi
_
6. Pobieramy toolchain(kompilator, linker, debugger itd..) - wymagany git(jeśli nie masz: sudo apt-get install git)

**git clone https://github.com/raspberrypi/tools**
_
7. Tworzymy sobie minimalny unixowy system plików - symulujący układ plików na malinie.

mkdir sysroot sysroot/usr sysroot/opt

Synchronizujemy zawartość folderów z malinką - musimy też znać adres IP naszego Raspberry Pi:

rsync -avz pi@IP:/lib sysroot
rsync -avz pi@IP:/usr/include sysroot/usr
rsync -avz pi@IP:/usr/lib sysroot/usr
rsync -avz pi@IP:/opt/vc sysroot/opt
_
8. Poprawiamy symlinki - tak aby ścieżki były relatywne(odnosiły się do katalogów począwszy od sysroot, a nie całego systemu). Nie zastanawiając się za długo nad znaczeniem poprzedniego zdania po prostu pobieramy i uruchamiamy skrypt pythona:

**wget https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py**
**chmod +x sysroot-relativelinks.py**
**./sysroot-relativelinks.py sysroot**

_
9. Teraz pobieramy źródła bibliotek Qt w najnowszej wersji:

git clone git://code.qt.io/qt/qt5.git
cd qt5
git checkout 5.6

Następnie uruchamiamy skrypt perla który sklonuje nam z repozytorium moduły bibliotek Qt, jeśli nie podamy ich listy skopiuje wszystko, może to potrwać dłużej, aby zaoszczędzić czasu polecam nie pobierać na początku tych modułów:
-qtwebkit,-qtwebkit-examples,-qtwebengine
zawsze można wywołać ten skrypt ponownie i pobrać resztę. Zostańmy przy domyślnym zestawie

perl init-repository --module-subset=default

W zależności od prędkości internetu pobieranie może trochę potrwać....
_
10. Gdy już wszystko się pobierze zabieramy się za konfigurację naszych bibliotek, w zależności od modelu posiadanego raspberry pi dajemy -device linux-rasp-pi-g++(dla raspberry pi 1) lub -device linux-rasp-pi2-g++ (dla raspberry pi 2)

./configure \
-release \
-opengl es2 \
-device linux-rasp-pi2-g++ \
-device-option CROSS_COMPILE=~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- \
-sysroot ~/raspi/sysroot \
-opensource -confirm-license \
-make libs \
-prefix /usr/local/qt5pi \
-extprefix ~/raspi/qt5pi \
-hostprefix ~/raspi/qt5 -v


Po poprawnym zakończeniu konfiguracji kompilujemy to wszystkowydając polecenie:

make

Teraz drogi czytelniku możesz sobie iść zrobić, obiad, kolację przywitać się z rodziną, która dawno Cię nie widziała, bo kucowałeś godzinami przed komputerem itd.... Kompilacja potrwa kilka godzin w zależności od tego jak mocny procesor posiadasz, na Raspberry Pi trwałaby kilka dni ( ͡° ͜ʖ ͡°)
_
11. Gdy już wreszcie kompilacja się skończy instalujemy wszystko poleceniem:

make install

Po skończonej instalacji synchronizujemy katalogi z maliną:

rsync -avz qt5pi pi@IP:/usr/local
_
12. Kompilujemy i wysyłamy do maliny przykładowy program(na razie ręcznie):

cd qtbase/examples/opengl/qopenglwidget
~/raspi/qt5/bin/qmake
make
scp qopenglwidget pi@IP:/home/pi
_
13. Na malinie dajemy linkerowi znaleźć nasze nowe biblioteki:

echo /usr/local/qt5pi/lib | sudo tee /etc/ld.so.conf.d/qt5pi.conf
sudo ldconfig
_
14. Wykonujemy poprawki związane z EGL/GLES

The device may have the Mesa version of libEGL and libGLESv2 in /usr/lib/arm-linux-gnueabihf, resulting Qt apps picking these instead of the real thing from /opt/vc/lib. This may be fine for X11 desktop apps not caring about OpenGL performance but is totally useless for windowing system-less, fullscreen embedded apps.

sudo rm /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
sudo ln -s /opt/vc/lib/libEGL.so /usr/lib/arm-linux-gnueabihf/libEGL.so.1.0.0
sudo ln -s /opt/vc/lib/libGLESv2.so /usr/lib/arm-linux-gnueabihf/libGLESv2.so.2.0.0
_
15. Na malinie wchodzimy do katalogu domowego i uruchamiamy nasz przykładowy program:

./qopenglwidget

Na ekranie podłączonym do RaspberryPi powinna się uruchomić nasza aplikacja.
_
16. Instalujemy najnowszą wersję Qt na PC wraz z Qt creatorem. Pobieramy instalator stąd:
//download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run

Po pobraniu wchodzimy do katalogu w którym zapisaliśmy nasz plik i nadajemy mu prawa do uruchomienia:

chmod +x qt-unified-linux-x64-2.0.2-2-online.run

i uruchamiamy jako root:

sudo ./qt-unified-linux-x64-2.0.2-2-online.run

Powinien się uruchomić graficzny instalator. Polecam jako katalog do instalacji wybrać sugerowany /opt/Qt
Następnie zaznaczamy komponenty jak poniżej:



i klikamy "Dalej" instalator pobierze i zainstaluje biblioteki, oraz Qt creatora.
_
17. Konfiguracja RaspberryPi w Qt Creatorze - uruchamiamy nasze IDE i kolejno:

Narzędzia -> Opcje -> Urządzenia
-Dodaj
---Nazwa: Malina
---Ogólne Urządzenie Linuksowe
---Wpisujemy adres IP naszej maliny, login(pi) i hasło(raspberry)

Narzędzia -> Opcje -> Kompilatory
-Dodaj
---Nazwa: raspi-GCC
---GCC
---ścieżka kompilatora: ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++

Narzędzia -> Opcje -> Debuggery
-Dodaj
---Nazwa: raspi-GDB
---ścieżka ~/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gdb

Narzędzia -> Opcje -> wersje Qt
-dodajemy ścieżkę do qmake ~/raspi/qt5/bin/qmake

Narzędzia -> Opcje -> Budowanie i Uruchamianie
-Zestawy Narzędzi
-Dodaj
---Nazwa: Malina-DEPLOY
---Typ Urządzenia: Ogólne Urządzenie Linuksowe
---Urządzenie: Malina
---Sysroot: ~/raspi/sysroot
---Kompilator: raspi-GCC
---Debugger: raspi-GDB
---wersja Qt: 5.6.0 dla Qt5
---Qt mkspec: pusty
_
18. NARESZCIE WSZYSTKO GOTOWE - OD TERAZ MOŻESZ SWOBODNIE KUCOWAĆ PROGRAMY NA SWOJĄ MALINĘ WPROST ZE SWOJEGO PCta.
_
19. Dla testu wybieramy sobie jakiś przykład z Powitanie -> Przykłady
Ja wybrałem QML VIDEO SHADER EFFECT

W oknie konfiguracji naszego projektu zaznaczamy dodatkowo nasz zestaw Malina-DEPLOY
Ważne też żeby w pliku .pro zmienić
target.path = $$[QTINSTALLEXAMPLES]/multimedia/video/qmlvideofx
na
target.path = /home/pi

następnie klikamy w Dużą ikonę z komputerem po lewej stronie i wybieramy nasz zestwa Malina-DEPLOY i naciskamy ikonę młotka aby zbudować program.
Gdy już się zbuduje wciskamy Run i cieszymy się aplikacją odpaloną zdalnie na malinie ( ͡° ͜ʖ ͡°)



źródła:
https://wiki.qt.io/RaspberryPi2EGLFS
https://wiki.qt.io/Building_Qt_5_from_Git
//www.ics.com/blog/building-qt-5-raspberry-pi

Treści powiązane (1)

Przykładowa aplikacja w Qt5 uruchomiona na pierwszym RaspberryPi
QBA__
z youtu.be
  • 5

Komentarze (123)

najlepsze

l.....m
l.....m
konto usunięte 22.03.2016, 12:43:31
  • -1
Qurva, tragedia...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

k.....l
k.....l
konto usunięte 19.03.2016, 15:54:41
  • -3
Qt5 ssie i śmierdzi.
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

li7j00
li7j00
li7j00
19.03.2016, 09:01:38
  • -23
bez sensu,

lepiej pokaz jak pisze sie programy pod qt bo tego prawie nie ma. Jak zrobic edytor z numeracja wierszy (jest przyklad po angielsku) jak uzyc 2-3 widgetow, ale dokladnie

instalacje zrobi kazdy
  • 20
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

tank_driver
tank_driver
19.03.2016, 11:46:29
  • 5
stwierdzenie , ze trzeba sie uczyc angielskiego by byc programista


@li7j00: To nie jest stwierdzenie, to jest rzeczywistość, i im wcześniej przestaniesz ją negować tym lepiej dla Ciebie.
  • Odpowiedz
QBA__
QBA__
Autor
19.03.2016, 11:49:16
  • 4
@li7j00:

ja znalazlem jeden i to kiepski po polsku

gdzie te tony, wymien 5 sztuk


znalazlem... #
  • Odpowiedz
leoha
leoha
19.03.2016, 07:48:31
  • -36
kompilacji skrośnej na PC


skrośnej? Co to za potworek? To słowo najlepiej nie tłumaczyć i po prostu napisać cross kompilacji lub jak już bardzo chcesz to użyć polskiego słowa.. nie wiem może kompilacji krzyżowej?
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

another_throwaway23
another_throwaway23
19.03.2016, 10:07:16
  • 54
@leoha: termin funkcjonuje normalnie w branży i nie jest jakimś tłumaczeniem wymyślonym przez OPa.
  • Odpowiedz
another_throwaway23
another_throwaway23
19.03.2016, 12:10:58
  • 11
@ostatni_i_sprawiedliwy: zgadza się. ale później część z nich stęka, że muszą "czelendźować taski na asap, bo będzie fakap". nie ma potrzeby robić zapożyczeń z angielskiego jak można użyć dobrego polskiego zamiennika.
  • Odpowiedz
  • <
  • 1
  • 2
  • 3
  • Strona 3 z 3
  • >

Hity

tygodnia

Nie żyje Joanna Kołaczkowska
Nie żyje Joanna Kołaczkowska
5867
#niejembodrogo uderzmy w Januszy gastronomi!
#niejembodrogo uderzmy w Januszy gastronomi!
3924
Ponad 300 km/h przez Warszawę. Prokuratura umorzyła śledztwo.
Ponad 300 km/h przez Warszawę. Prokuratura umorzyła śledztwo.
3401
Nadkomisarz przyjeżdża na potańcówkę i parkuje na środku Katowickiego rynku.
Nadkomisarz przyjeżdża na potańcówkę i parkuje na środku Katowickiego rynku.
3055
PZKFiTS wycofuje licencję najlepszej zawodniczce na świecie, Agacie Sitko
PZKFiTS wycofuje licencję najlepszej zawodniczce na świecie, Agacie Sitko
2849
Pokaż więcej

Powiązane tagi

  • #ubuntu
  • #windows
  • #komputery
  • #debian
  • #archlinux
  • #informatyka
  • #linuxmint
  • #programowanie
  • #pytanie
  • #heheszki
  • #pcmasterrace
  • #apple
  • #mint
  • #kiciochpyta
  • #linuxmasterrace

Wykop © 2005-2025

  • O nas
  • Reklama
  • FAQ
  • Kontakt
  • Regulamin
  • Polityka prywatności i cookies
  • Hity
  • Ranking
  • Osiągnięcia
  • Changelog
  • więcej

RSS

  • Wykopane
  • Wykopalisko
  • Komentowane
  • Ustawienia prywatności

Regulamin

Reklama

Kontakt

O nas

FAQ

Osiągnięcia

Ranking