한국어
Qt
 

Raspberry Pi 4에 대한 Qt5.14 크로스컴파일을 우분투 18.04에서 진행해보았다. 2019년 10월 경에 Raspberry Pi 4 에서 사용되는 Broadcom사의 V3D에대한 Mesa 그래픽 스택의 업데이트 소식을 공유한 적이 있었는데 (https://makersweb.net/news/15210) 이번에 직접 Qt를 올려봄..

 

Mesa 19.3 부터 Raspberry Pi 4 에서 사용되는 Broadcom "V3D" Gallium3D 드라이버는 OpenGL ES 3.1을 지원한다. 그러므로 Mesa를 먼저 크로스컴파일 하고 Qt를 구축한다. (Broadcom 스택이 아님에 주의 할 것.)

 

라즈베리파이4 운영체제는 라즈비안 buster 를 사용하였다. 이미지를 다운로드 받고 sd카드에 쓴다.

 

sd카드를 우분투 pc에 장착하면 boot, rootfs 으로 마운트된다. 빌드 후 여기에 직접 복사할 예정..

 

우분투 18.04에서 크로스툴체인 패키지 설치

 

sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf ccache pkg-config-arm-linux-gnueabihf
 
drm 크로스 컴파일
mesa 및 drm빌드는 meson빌드 시스템을 사용하므로 크로스 컴파일을 위한 구성파일 작성.
cross_file
[binaries]
c = '/usr/lib/ccache/arm-linux-gnueabihf-gcc'
cpp = '/usr/lib/ccache/arm-linux-gnueabihf-g++'
ar = '/usr/bin/arm-linux-gnueabihf-ar'
strip = '/usr/bin/arm-linux-gnueabihf-strip'
pkgconfig = '/usr/bin/arm-linux-gnueabihf-pkg-config'
 
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv8hl'
endian = 'little'
 
sudo apt-get install valgrind
 
git clone git://anongit.freedesktop.org/mesa/drm
cd drm
 
빌드구성명령
meson build/ \
    --cross-file=$HOME/pi/mesa/cross_file \
    --prefix=/usr \
    --libdir=lib/arm-linux-gnueabihf \
    "$@"
 
ninja -C build/

 

sudo env DESTDIR=/ ninja -C build/ install

 

sd카드 rootfs에도 설치한다.

 

 

Mesa 크로스 컴파일

추가 필요패키지 (모든 의존성 패키지들을 크로스 컴파일 할 수 없으므로 apt 를 이용하여 설치)
sudo apt-get install \
    flex bison python-mako \
    libxcb-dri3-dev:armhf libxcb-dri2-0-dev:armhf \
    libxcb-glx0-dev:armhf libx11-xcb-dev:armhf \
    libxcb-present-dev:armhf libxcb-sync-dev:armhf \
    libxshmfence-dev:armhf \
    libxdamage-dev:armhf libxext-dev:armhf libxfixes-dev:armhf \
    libexpat1-dev:armhf libudev-dev:armhf gettext \
    libxxf86vm-dev:armhf libxrandr-dev:armhf
 
* 설치가 안되면 다음 링크 참조
https://askubuntu.com/questions/1061979/cross-compile-for-armhf-and-install-a-static-library
 
git clone git://anongit.freedesktop.org/mesa/mesa
cd mesa
 
빌드구성명령
meson build/ \
  --cross-file=$HOME/pi/mesa/cross_file \
  --prefix=/usr \
  --libdir=lib/arm-linux-gnueabihf \
  -Dtexture-float=true \
  -Ddri-drivers= \
  -Dgallium-drivers=v3d,swrast \
  -Dvulkan-drivers= \
  -Dllvm=false \
  -Dplatforms=x11,drm,surfaceless \
  -Dlibunwind=false \
  -Dllvm=false \
  "$@"

 

 

ninja -C build/
sudo env DESTDIR=/ ninja -C build/ install

 

sd카드 rootfs에도 설치한다.

 

 

Qt 5.14.1 크로스 컴파일

다음 링크 또는 git을 통한 Qt 소스코드 다운로드(https://download.qt.io/archive/qt/)

 

빌드구성

pjk@ubuntu:~/pi/qt/qt5$ ./configure -opensource -confirm-license -release -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- -prefix /usr/local/qt5pi -extprefix $HOME/pi/qt5 -hostprefix $HOME/pi/qt5 -nomake examples -nomake tests -no-use-gold-linker -qt-pcre -skip qtscript -skip qttools

 

make -j4

make install

 

이후 sd카드 rootfs에(/usr/local/qt5pi)도 설치하고 sd카드를 라즈베리파이4에 장착하고 부팅 후 ssh를 활성화한다.

 

호스트(우분투)에서 QtCreator IDE 설정을 하고 예제를 컴파일 하여 라즈베리파이4에 배포한다. 응용프로그램을 "-platform eglfs" 옵션으로 실행하면 X기반에서 전체화면으로 실행된다.

 

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 85961
23 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 221222
22 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 [20] file makersweb 2018.02.23 12981
21 안드로이드 Qt 프로그래밍 file makersweb 2018.11.30 8826
» 라즈베리파이4에 대한 Qt 5.14.1 크로스컴파일 [1] file makersweb 2020.02.12 4450
19 QPA 플러그인과 EGLFS file makersweb 2017.11.21 3928
18 Qt Bluetooth를 이용한 시리얼(Serial) 통신 file makersweb 2019.02.17 3571
17 Qt5기반 독립 프로세스(out-of-process)로 동작하는 가상키보드(virtual keyboard) file makersweb 2019.02.24 2628
16 QtWayland와 ivi-compositor file makersweb 2018.12.27 2403
15 MCU용 Qt에 대해서 makersweb 2019.08.22 1916
14 라즈베리파이3에서 Boot to Qt 실행해보기 makersweb 2019.11.13 1668
13 Qt MQTT의 pus/sub 튜토리얼 file makersweb 2021.02.06 1642
12 Qt for Embedded Linux 화면출력 makersweb 2019.10.17 1599
11 싱글터치 스크린 및 임베디드 리눅스 기반에서 Qt 터치입력 makersweb 2018.12.24 1399
10 안드로이드 가상장치 사용 file makersweb 2019.01.13 1074
9 Qt MQTT 에 대해서 file makersweb 2020.06.02 960
8 Qt로 작성된 안드로이드 APP에 Splash Screen을 추가 file makersweb 2020.03.10 885
7 Qt로 작성된 iOS 앱에서 시리얼 통신 file makersweb 2022.04.30 853
6 QPA 플러그인과 HTML5 Backend file makersweb 2017.12.27 808
5 Qt for MCU 1.0 릴리즈 makersweb 2019.12.10 752
4 Qt Bluetooth Low Energy 개요 makersweb 2022.02.13 668