[Buildroot] 빌드루트 와이파이(WiFi) 및 SSH 활성화 설정
임베디드 리눅스 개발시 크로스 컴파일을 필수이며 그러기 위해서는 SSH를 활성화 해야한다.빌드루트는 이더넷이 기본으로 활성화가 되어있어 랜선을 꽃고 SSH만 활성화 해서 크로스 컴파일을
gun-ny.tistory.com
이전 글에서 빌드루트 설정을 통해 와이파이 및 SSH 활성화를 했으면 이제 호스트 컴퓨터에서 SSH를 이용하여 타겟보드를 대상으로 크로스 컴파일이 가능하다.
현재까지 써왔던 글들과 마찬가지로 라즈베리파이5를 타겟보드로 크로스 컴파일을 해보도록 하겠다.
Qt는 Qt6부터 qmake이 아닌 CMake를 권장한다.
이번 글에서는 CMake 프로젝트 기준으로 작성토록 하겠다.
Qt 크로스 컴파일 Kit 설정

Edit -> Preferences 를 들어가면 위와 같은 설정창을 볼 수 있다.

'Remote Linux Device'를 추가해주고 이전 글을 통해 SSH에 접속했듯이 호스트네임과 유저네임 등을 위와 같이 설정하여 연결을 시도하여 비밀번호를 입력하면 연결이 된다.
비밀번호 없이 키를 통해 자동으로 연결하고 싶다면 'Use specific Key'와 'Auto-connect on startup'을 활성화 시켜준 뒤 'Create New...'를 통해 키 암호화 방식을 선택한 뒤 키를 만들고 'Deploy Public Key...'를 눌러 공개키를 타겟보드에 등록하면 된다.
원격 컴퓨터에 생성된 개인 키와 공개 키는 '~/.ssh' 경로에 'qtc_id'와 'qtc_id.pub'으로 저장되며 타겟보드에 등록된 공개키는 똑같은 경로의 'authorized_keys'에 저장된다.

이렇게 타겟보드에 접속하기 위한 SSH 설정이 끝났으면 Kits 탭의 Qt Versions 탭으로 가보자
그리고 위와 같이 경로를 설정하여 추가를 하면 된다.
경고 아이콘이 떠있는 이유는 Qt 버전 환경 변수를 찾을 수 없다는건데 qmake는 사용하지 않을거라 일단 무시하고 다음으로 넘어가자

컴파일러 설정도 위와 같은 경로로 추가하면 C 컴파일러 경로와 더불어 C++ 컴파일러 경로도 자동으로 지정된다.
라즈베리파이5 아키텍쳐인 aarch64(arm64)를 지정해서 ABI는 자동으로 'arm-linux-generic-elf-64bit'로 지정된다.

디버거도 똑같이 위와 같은 경로로 추가해준다.

그렇게 Kits 탭으로 돌아와서 지금까지 추가해준 타겟보드(Run device), 컴파일러(Compiler), 디버거(Debugger), qmake(Qt version)을 지정해주고 'Sysroot'는 위와 같은 경로로 설정하여 Kit를 추가해준다.
아까 설정했던 Qt version이 이번에는 지정한 컴파일러와 ABI가 맞지 않다고 경고를 띄우는데 이 또한 무시해준다.
이렇게 우분투에서 라즈베리파이5용 크로스 컴파일러를 설정하였다.
어느 호스트 컴퓨터(윈도우 등)에서든 위와 같이 Kit를 설정해주면 라즈베리파이5용 타겟보드 크로스 컴파일을 할 수 있다.

이제 프로젝트를 만들텐데 빌드시스템을 qmake가 아닌 CMake(Qt 5 and Qt 6)으로 만들어야 한다.

그리고 Kit 선택에서 우리가 만들었던 Kit를 선택해준다.
프로젝트 빌드 및 실행

프로젝트가 만들어졌다면 Build -> Run CMake를 눌러 CMake를 돌리면 위 에러 메시지를 사라진다.
import QtQuick
import QtQuick.Controls.Material
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Column {
anchors.centerIn: parent
spacing: 30
Label {
anchors.horizontalCenter: parent.horizontalCenter
font.bold: true
font.pointSize: 100
text: "Hello SSH"
}
Button {
anchors.horizontalCenter: parent.horizontalCenter
width: 300
height: 100
font.bold: true
font.pointSize: 20
text: "Click Me"
}
}
}
필자는 간단하게 위와 같이 qml을 작성하여 텍스트와 버튼이 있는 UI를 구성하였다.

그리고 Run을 눌러 타겟보드에서 애플리케이션을 실행해보면 위와 같은 메시지가 뜰 수 있다.
어디서 본 익숙한 메시지다. 아래 글에서 LANG과 언어 관련 환경변수를 설정해주지 않아 발생했던 메시지다.
[Buildroot] 빌드루트를 올린 라즈베리파이5에서 Qt 애플리케이션 실행
[STM32/라즈베리파이/Qt] TA모닝 아날로그 계기판 디지털 계기판으로 만들기* 이번 프로젝트 작업기는 포트폴리오용으로 쓰는 것이라 이전 프로젝트의 작업기보다 조금 더 자세히 쓴 글이라는 점
gun-ny.tistory.com

LANG=ko_KR.UTF-8
QT_QPA_EGLFS_KMS_CONFIG=/etc/qt/kms.json
QT_QPA_EGLFS_KMS_ATOMIC=1
위와 같이 애플리케이션 실행 전에 환경 변수를 지정해주면 된다.

그럼 개발은 호스트 컴퓨터(우분투)에서 하여 컴파일까지 하고 실행은 타겟 보드(라즈베리파이5)에서 하는 크로스 컴파일 환경이 구축되어 위와 같이 애플리케이션 실행은 라즈베리파이5에서 되는 것을 볼 수 있다.
'Buildroot' 카테고리의 다른 글
| [Buildroot] 빌드루트 와이파이(WiFi) 및 SSH 활성화 설정 (0) | 2025.12.29 |
|---|---|
| [Buildroot] 빌드루트를 올린 라즈베리파이5에서 Qt 애플리케이션 실행 (0) | 2025.12.26 |
| [Buildroot] cmdline.txt quiet 부팅 옵션으로 부팅 로그 숨기기 (0) | 2025.12.24 |
| [Buildroot] Busybox 초기화 시스템의 init.d를 통해 시작 프로그램 등록 (0) | 2025.12.24 |
| [Buildroot] make -dirclean 빌드 최적화를 통해 Pakage, rootfs, cmdline.txt, config.txt 재구성 (0) | 2025.12.24 |