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

paw39
paw39
paw39
11.04.2016, 16:41:01
  • 1
Dalej bez powodzenia na pi2:

`/home/pawel/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++ -c -pipe -march=armv7-a -marm -mthumb-interwork -mfpu=neon-vfpv4 -mtune=cortex-a7 -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/pawel/raspi/sysroot -g -Wall -W -fPIC -I. -I../../mkspecs/devices/linux-rasp-pi2-g++ -o arch.o arch.cpp
arch.cpp:37:19: fatal error: stdio.h: Nie ma takiego pliku ani katalogu
#include
^
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

pretendin
pretendin
08.04.2016, 09:56:21
  • 1
zabawne, bo dzisiaj od rana szukam akurat TEGO tutoriala. Wielki dzięki!

Zanim usiąde do malinki, chciałbym sie dowiedzieć co jeżeli wystarczy mi qt4, jest łatwiej?
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

mwicat
mwicat
20.03.2016, 12:49:14
  • 1
@QBA__ myślę że znacznie by obniżyło próg wejścia dla nowych, gdybyś wrzucił wirtualkę desktopa ze skompilowanymi binarkami i ewentualnie obraz skonfigurowanego raspbiana. Brzmi jak dużo zachodu ale w sumie ogranicza sie do powtórzenia kroków z twojego tutoriala i wrzucenia obrazów na google drive.
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

k.....v
k.....v
konto usunięte 19.03.2016, 23:33:34
  • 1
nie znam się ale wykopię, bo jeśli ktoś włożył pracę w dobry materiał, to się rozumie
samo przez się
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Neurotok
Neurotok
19.03.2016, 10:26:43
  • 1
Pamiętam jak męczyłem się chyba tydzień przy 5.2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

QBA__
QBA__
Autor
18.03.2016, 22:23:00
  • 1
A i od razu sorry za te gwiazdki wokół niektórych komend, jak jest link do strony wewnątrz, to psuje się formatowanie - jakiś nowy #maciejpsuje
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

paw39
paw39
paw39
19.03.2016, 18:34:07
  • 0
@QBA__
Mam problem:
Po wydaniu polecenia:
sudo apt-get build-dep qt4-x11
Dostaję na końcu to:
  • 28
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

adam-turowski-16
adam-turowski-16
19.03.2016, 19:51:18
  • 2
@QBA__ @paw39: nie "free", tylko "df"
  • Odpowiedz
paw39
paw39
paw39
20.03.2016, 15:00:39 via Android
  • 1
@QBA__: wpisalem jesscze raz jak pisales i teraz wyglada ze cos idzie. dam znac czy poszło
  • Odpowiedz
Veimdal
Veimdal
19.03.2016, 11:18:00 via Android
  • 0

Komentarz usunięty przez moderatora

robo81
robo81
robo81
19.03.2016, 07:34:41 via Android
  • 0
15 kilo jak nic
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

QBA__
QBA__
Autor
19.03.2016, 11:38:36
  • 2
@robo81: chciałbym...

  • Odpowiedz
benyowsky
benyowsky
19.03.2016, 12:19:19
  • 1
@QBA__: ale jesteś programistą jeśli programujesz nawet nie zawodowo ;)
  • Odpowiedz
dostaniesz_nowy
dostaniesz_nowy
22.03.2016, 16:38:34
  • -1
da sie skompilowac program w qt mec cmake?
jak zmienic cmake by wyswietlal co kompiluje i jak?
gdzies jest opis cmake jak tego uzywac po polsku?
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

  • <
  • 1
  • 2
  • 3
  • Strona 2 z 3
  • >

Hity

tygodnia

Szpital w Kaliszu zatrudnia ginekologa za 2,5 mln zł rocznie. "Jest unikalny"
Szpital w Kaliszu zatrudnia ginekologa za 2,5 mln zł rocznie. "Jest unikalny"
2864
Pszczyna dyskryminuje chłopców w podstawówce za unijne pieniądze
Pszczyna dyskryminuje chłopców w podstawówce za unijne pieniądze
2634
Dwie wanny za 800 000 złotych w Muzeum Sztuki Nowoczesnej w Warszawie
Dwie wanny za 800 000 złotych w Muzeum Sztuki Nowoczesnej w Warszawie
2521
Znów ci sami ludzie zorganizują jarmark w Krakowie
Znów ci sami ludzie zorganizują jarmark w Krakowie
2414
Koniec 800 plus oraz 13. i 14. emerytury? Petycja już w Sejmie
Koniec 800 plus oraz 13. i 14. emerytury? Petycja już w Sejmie
2299
Pokaż więcej

Powiązane tagi

  • #ubuntu
  • #windows
  • #komputery
  • #debian
  • #archlinux
  • #informatyka
  • #linuxmint
  • #programowanie
  • #pytanie
  • #heheszki
  • #pcmasterrace
  • #apple
  • #technologia
  • #linuxmasterrace
  • #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