지난 포스트에서는 욕토프로젝트를 이용하여 라즈베리파이3를 위한 Qt 프레임웍 + 임베디드 리눅스 시스템을 구축해보았다.
이번 포스트는 이 시스템을 위한 Qt 응용프로그램 SDK를 만들고 SDK를 설치하여 간단한 응용프로그램을 개발 및 실행 시켜본다.
여기서 설명하는 내용은 지난 포스트에서 설명했던 작업의 연장선이기 때문에 개발환경이 준비가 안되었다면 이전 글을 참고해야 한다.
SDK 빌드
Qt SDK를 만들기 위해서는 이전에 만든 레시피를 조금 수정해야한다. basic-qt5-image.bb파일을 편집기로 열고 상단에 아래의 내용을 추가한다.
이제 아래의 명령으로 SDK를 빌드할 수 있다.
$ bitbake basic-qt5-image -c populate_sdk
빌드가 성공적으로 완료되면 tmp/deploy/sdk 디렉토리에 SDK 설치 스크립트 파일이 만들어진다.
poky-glibc-x86_64-basic-qt5-image-cortexa7t2hf-neon-vfpv4-toolchain-2.6.1.sh
설치파일을 실행하고 기본위치(/opt)에 설치한다.
$ ./poky-glibc-x86_64-basic-qt5-image-cortexa7t2hf-neon-vfpv4-toolchain-2.6.1.sh
설치를 완료하고 다음과 같이 환경설정 스크립트를 실행한다.
$ source /opt/poky/2.6.1/environment-setup-cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi
QtCreator 설정
이제 같은 터미널에서 QtCreator를 실행하고 Tools - Options - Kits 메뉴를 선택.
먼저 컴파일러를 추가한다.
/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
그다음 디버거를 추가한다.
/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gdb
qmake는 아래의 위치에서 찾을 수 있다.
/opt/poky/2.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/qmake
Kits탭에서 새롭게 추가한 컴파일러, 디버거, qmake를 지정하고 설정을 완료한다. 이제 추가한 Kit으로 빌드 할 수 있다.
예제 응용프로그램 작성
아래는 테스트를 위한 간단한 Qt 응용프로그램 예제이다.
시스템에 폰트가 없기 때문에 폰트를 준비하고 main.cpp에서는 이 폰트를 로드한다.
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QFontDatabase>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
int id = QFontDatabase::addApplicationFont(qApp->applicationDirPath()+"/NotoSansCJKkr-Regular.otf");
QString family = QFontDatabase::applicationFontFamilies(id).at(0);
QFont NotoSans(family);
app.setFont(NotoSans);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
main.qml
import QtQuick 2.11
import QtQuick.Window 2.11
Window {
id: window
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Text {
id: text
text: qsTr("Makersweb.net \n 환영합니다.")
anchors.centerIn: parent
font.pixelSize: 30
horizontalAlignment: Text.AlignHCenter
}
}
배포 및 실행
이제 빌드된 실행파일과 폰트를 라즈베리파이에 복사한다. (간단히 scp를 이용하였다.)
$ scp hello root@192.168.0.26:/home/root
다음과 같이 응용프로그램을 실행하면 전체 화면으로 실행된다.
root@raspberrypi3:~# ./hello -platform eglfs
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
9 | POSIX를 지원하는 오픈소스 RTOS, RTEMS | makersweb | 2020.04.15 | 1739 |
8 | 라즈베리파이 부팅 가능한 sd카드 파티션 생성 | makersweb | 2020.04.15 | 1726 |
7 | 디바이스 트리(Device Tree, DT) | makersweb | 2020.01.12 | 5558 |
6 | 임베디드 비대칭 멀티 프로세싱(asymmetric multiprocessing) 시스템 | makersweb | 2019.12.31 | 940 |
5 | 임베디드 리눅스 부팅 절차 | makersweb | 2019.10.21 | 6135 |
4 | mainline 커널 및 etnaviv 를 사용하는 Wandboard(Freescale i.MX6Q)에서 eglfs를 사용 | makersweb | 2019.10.17 | 939 |
» | 욕토 프로젝트를 이용한 Qt SDK 빌드 for 라즈베리파이3 | makersweb | 2019.03.19 | 3063 |
2 | yocto project, 라즈베리파이를 위한 Qt + 임베디드리눅스 빌드 | makersweb | 2019.02.01 | 10997 |
1 | 실시간 운영 체제 또는 RTOS(Real Time Operating System) | pjk | 2014.12.02 | 5847 |