한국어
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 85680
178 가상키보드(Qt Virtual Keyboard)를 사용하는 방법 [32] file makersweb 2019.05.03 220724
177 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51831
176 QString 문자열 다루기 예제 운영자 2019.01.26 39911
175 Windows에서 Qt 설치 따라하기 file makersweb 2019.10.14 30840
174 Qt의 시그널 슬롯 시스템 file makersweb 2015.10.20 23529
173 QThread 소개 및 예제 makersweb 2019.12.25 19375
172 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 14829
171 초보자를 위한 첫번째 프로젝트 - QML로 만드는 Hello World file makersweb 2018.03.16 14420
170 Qt 프로그래밍의 시작 makersweb 2015.10.25 14355
169 Qml과 C++로 구현하는 GUI어플리케이션 file makersweb 2018.12.25 13898
168 QML과 QtQuick 모듈 개념과 기본 타입들 makersweb 2019.04.26 13371
167 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 [20] file makersweb 2018.02.23 12851
166 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12510
165 Qml 기본 컴포넌트 강좌 (1) file makersweb 2019.01.03 12040
164 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 11858
163 Qt Installer Framework - 패키징, 설치프로그램 제작 file makersweb 2018.10.14 11631
162 Qt 응용프로그램 배포(windows) file makersweb 2018.10.10 11279
161 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 10659
160 Qt의 스레드간 시그널 슬롯의 커넥션타입 [1] makersweb 2015.10.24 10145
159 QML 강좌 - 동적 Listing (ListView) file makersweb 2019.06.01 10070