Wykop.pl Wykop.pl
  • Główna
  • Wykopalisko237
  • 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

WuDwaKa
WuDwaKa
18.03.2016, 22:19:20
  • 86
Ten artykuł jest przeznaczony tylko dla nerdów, jeśli nie wiesz o co chodzi już w tytule, to nie czytaj dalej ( ͡° ͜ʖ ͡°)


A to spoko, masz wykop (⌐ ͡■ ͜ʖ ͡■)
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

ppawel
ppawel
19.03.2016, 11:34:29
  • 17
@picza_morda: na szczęście nie ma takiego powodu, ale jeśli jakiś temat cię nie interesuje to oczywiście zawsze możesz usunąć konto, ale możesz też wrzucić wybrane tagi na czarnolisto. Masz wybierz sobie: #linux #programowanie #raspberrypi #gruparatowaniapoziomu #zainteresowania #protip
  • Odpowiedz
QBA__
QBA__
Autor
19.03.2016, 11:50:53
  • 20
czyli mozna zakopac, bo mnie to nie interesuje


@picza_morda:
QBA_ - > czyli mozna zakopac, bo mnie to nie interesuje

@piczamorda:
  • Odpowiedz
dzbanek123
dzbanek123
18.03.2016, 22:52:04
  • 9
@QBA__: make -j 4
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

QBA__
QBA__
Autor
18.03.2016, 23:02:49
  • 4
@dzbanek123: już nie poprawię, ale dobra rada, będzie szybciej.
  • Odpowiedz
j.....a
j.....a
konto usunięte 19.03.2016, 16:02:23
  • 2

Komentarz usunięty przez moderatora

TypowyNerd
TypowyNerd
TypowyNerd
19.03.2016, 11:29:55
  • 6
Treść przeznaczona dla osób powyżej 18 roku życia...
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

W.....r
W.....r
konto usunięte 19.03.2016, 11:11:58 via Android
  • 6
Wiem co to PI, wiem co to Qt. Na programowaniu się nie znam. Wykop.
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

K.....s
K.....s
konto usunięte 19.03.2016, 13:41:00
  • 3
O, znalezisko jak z wykopu za dawnych lat! Wykop!
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Turboslaw
Turboslaw
19.03.2016, 11:43:30
  • 3
Autorze, skłaniasz się ku teorii, że LW rzeczywiście używał dd do wrzucania zdjęć na Wykop? Może to jednak jest wybraniec?!( ͡° ͜ʖ ͡°)

Turboslaw - Autorze, skłaniasz się ku teorii, że LW rzeczywiście używał dd do wrzucan...

źródło: comment_tbfIBiXxqMcr6GKXlaJV7BEb3TtDY1GG.jpg

Pobierz
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

QBA__
QBA__
Autor
19.03.2016, 11:58:40
  • 7
@Turboslaw:

Edit: Przepraszam za politykę

Spoko, jestem kucem - politykę potrafię wpleść w prognozę pogody xD
A co do Leszke to w końcu noblista, dalej czekam, aż ktoś rozszyfruje ukryte przed nami znaczenie jego masońskich wpisów - to nie może być dzieło przypadków ( ͡° ͜ʖ ͡°)
  • Odpowiedz
Turboslaw
Turboslaw
19.03.2016, 12:02:56
  • 2
@QBA__: Skoro wpisywał dd na Wykopie to ładnie mu się konsole p--------y. Ciekawe gdzie i co jeszcze niechcący pisał;D
  • Odpowiedz
MyNameIsNobody
MyNameIsNobody
19.03.2016, 11:13:23
  • 3
Masz wykop za kompilację skrośną, a nie "kroskompilację". ( ͡° ͜ʖ ͡°)
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

kwanty
kwanty
19.03.2016, 14:02:23
  • 2
@QBA__ ale po co? tak dla sportu, żeby poćwiczyć skrośną kompilację czy są jakieś apki warte odpalenia na malinie a wymagające qt5.6?

tak z ciekawości pytam, qt bardzo mi się podoba, kilka lat temu robiłem większy projekt w Qt4 i bardzo mnie urzekł przemyślaną konstrukcją i kompletem narzędzi do wszystkiego na wszystkie systemy :)
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

QBA__
QBA__
Autor
19.03.2016, 14:52:10
  • 4
@kwanty: no właśnie żeby pisać programy na malinę, mi też Qt bardzo się podoba i cieszy że raz napisany program zadziała niemal na wszystkim.
Na studiach miałem jakiś przedmiot gdzie na zaliczenie wziąłem projekt w Qt - prezentację wyników pomiarowych na raspberrypi.
W wersji 5.0 i wyżej doszło wiele fajnych dodatków np. Qserial do portów szeregowych i np. Obsługi magistrali CAN.
Takie zestawienie jak tu opisałem jest wygodniejsze i szybsze
  • Odpowiedz
kwanty
kwanty
19.03.2016, 18:00:36
  • 2
@QBA__: To się chwali ;-) bo teraz wszyscy uciekają w jakieś java-scryptowe frameworki wyglądające podle i potrzebujące ogromnych zasobów.

Mam taką refleksję:
- najpierw były zwykłe programy (natywne)
- potem zaczęliśmy się przenosić na przeglądarki (wszystko przez WWW)
- następny etap to znowu natywne programy: zamiast strony WWW meteo.pl jest apka
  • Odpowiedz
elRey
elRey
19.03.2016, 12:01:53 via Android
  • 2
A da się zainstalować Qt 3.14?
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

tank_driver
tank_driver
19.03.2016, 11:51:10
  • 2
Ostatnio ćwiczyłem trio Python3, PyGtk, Glade - bardzo przyjemnie tworzy się GUI do aplikacji.
  • 21
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

s.....e
s.....e
konto usunięte 19.03.2016, 13:38:22 via Android
  • 2
@tank_driver: no właśnie a jak z licencjami za ten zestaw
  • Odpowiedz
s.....e
s.....e
konto usunięte 19.03.2016, 13:49:40 via Android
  • 2
@tank_driver: a GPL glade wymusza GPL na produkcie końcowym?
  • Odpowiedz
  • <
  • 1
  • 2
  • 3
  • Strona 1 z 3
  • >

Hity

tygodnia

Wyrzucał śmieci, a po zwróceniu uwagi staranował auto
Wyrzucał śmieci, a po zwróceniu uwagi staranował auto
4175
Biedronka bezczelnie sprowadza korniszony z Indii!
Biedronka bezczelnie sprowadza korniszony z Indii!
2900

Pokaż 18+

Psy, które rozszarpały człowieka, pozostaną przy życiu decyzja z Zielonej Góry
Psy, które rozszarpały człowieka, pozostaną przy życiu decyzja z Zielonej Góry
2852
Afera: Jak lekarze organizują lobbing na zamkniętych grupach
Afera: Jak lekarze organizują lobbing na zamkniętych grupach
2708
Kpt. SG Anna Michalska będzie musiała sama bronić się przed hejtem celebrytów
Kpt. SG Anna Michalska będzie musiała sama bronić się przed hejtem celebrytów
2750
Pokaż więcej

Powiązane tagi

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

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