Wykop.pl Wykop.pl
  • Główna
  • Wykopalisko349
  • Mikroblog
  • Zaloguj się
  • Zarejestruj się
  • Wykop.pl
  • Ciekawostki

    Ciekawostki
  • Informacje

    Informacje
  • Rozrywka

    Rozrywka
  • Sport

    Sport
  • Motoryzacja

    Motoryzacja
  • Technologia

    Technologia
  • Ukraina

    Ukraina
  • Gospodarka

    Gospodarka
  • Podróże

    Podróże

Dostosuj Wykop do siebie

Wybierz treści, które Cię interesują
i zapisz jako Własną kategorię.

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__
QBA__
z
wykop.pl
dodany: 18.03.2016, 22:15:18
  • #
    linux
  • #
    programowanie
  • #
    raspberrypi
  • #
    gruparatowaniapoziomu
  • #
    zainteresowania
  • #
    protip
  • 123
  • Odpowiedz
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
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
ppawel
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__
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
dzbanek123
18.03.2016, 22:52:04
  • 9
@QBA__: make -j 4
  • 2
  • Odpowiedz
QBA__
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
Trafia do ogolnego folderu "Linux". Czuje sie troche jak gimnazjalista zbierajacy obrazki z dupami.
  • Odpowiedz
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
Kokos
Kokos
Kokos
19.03.2016, 13:41:00
  • 3
O, znalezisko jak z wykopu za dawnych lat! Wykop!
  • Odpowiedz
Turboslaw
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
QBA__
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
Turboslaw
19.03.2016, 12:02:56
  • 2
@QBA__: Skoro wpisywał dd na Wykopie to ładnie mu się konsole #!$%@?ły. Ciekawe gdzie i co jeszcze niechcący pisał;D
  • Odpowiedz
MyNameIsNobody
MyNameIsNobody
MyNameIsNobody
19.03.2016, 11:13:23
  • 3
Masz wykop za kompilację skrośną, a nie "kroskompilację". ( ͡° ͜ʖ ͡°)
  • Odpowiedz
kwanty
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
QBA__
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 niż
  • Odpowiedz
kwanty
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 na smartfona
- teraz znowu widzę tendencję: wypchnijmy wszystko na wyższą warstwę, będzie działać na wszystkim...

Ile jeszcze takich cykli
  • Odpowiedz
elRey
elRey
elRey
19.03.2016, 12:01:53 via Android
  • 2
A da się zainstalować Qt 3.14?
  • Odpowiedz
tank_driver
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
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
  • >
  • Wykopujący (441)
  • Zakopujący (19)

Hity

tygodnia

Psy american bully pogryzły jadącą na rolkach. Kobieta w stanie ciężkim|Oleśnica
Psy american bully pogryzły jadącą na rolkach. Kobieta w stanie ciężkim|Oleśnica
3757
Przypomnijmy: Przestępca Rafał Gaweł nadal poszukiwany przez Policje
Przypomnijmy: Przestępca Rafał Gaweł nadal poszukiwany przez Policje
2954
Adwokat "trumna na kółkach". Wrócił do zawodu.
Adwokat "trumna na kółkach". Wrócił do zawodu.
2644
Kłęby dymu w Oświęcimiu. Płonie skład opon. Sezon na palenie śmieci w pełni :)
Kłęby dymu w Oświęcimiu. Płonie skład opon. Sezon na palenie śmieci w pełni :)
2503
[PILNE] Premier Słowacji Robert Fico postrzelony po posiedzeniu rządu
[PILNE] Premier Słowacji Robert Fico postrzelony po posiedzeniu rządu
2117
Pokaż więcej

Powiązane tagi

  • #ubuntu
  • #windows
  • #debian
  • #komputery
  • #archlinux
  • #informatyka
  • #programowanie
  • #pytanie
  • #linuxmint
  • #heheszki

Wykop © 2005-2024

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

RSS

  • Wykopane
  • Wykopalisko
  • Komentowane
  • Ustawienia prywatności

Wykop.pl