Raspberry Pi 3에 Qt5 설치

2017.12.31 01:18

Raspberry Pi에 Qt 패키지를 설치한 후, 간단한 예제 코드를 작성하여 터미널에서 컴파일 하는 과정을 다루었습니다.

글작성 시점에서 5.7.1이 설치됩니다.

최신 버전을 설치하기 위해서는 소스코드를 다운로드 받아서 빌드해야 하는데 조만간 포스팅에서 다루도록하겠습니다.



1. 저장소를 업데이트 한 후, Qt 패키지를 설치합니다.


$ sudo apt-get update

$ sudo apt-get install qt5-default qtbase5-dev qtdeclarative5-dev qt5-qmake qtcreator libqt5gui5  qtscript5-dev qtmultimedia5-dev libqt5multimedia5-plugins qtquickcontrols2-5-dev libqt5network5 cmake build-essential




2. 설치 완료 후, Qt 버전을 확인합니다.


pi@raspberrypi:~ $ qmake -version

QMake version 3.0

Using Qt version 5.7.1 in /usr/lib/arm-linux-gnueabihf




3. qtcreator를 사용하지 않고 터미널에서 간단한 qt 예제 코드를 컴파일하는 과정을 다룹니다.


3-1. 프로젝트 파일들을 저장할 디렉토리를 생성하고 이동합니다.


pi@raspberrypi:~ $ mkdir SimpleQtExample

pi@raspberrypi:~ $ cd SimpleQtExample




편집기로 새로운 cpp 파일을 열어서


pi@raspberrypi:~/SimpleQtExample $ nano simple.cpp




다음 코드를 입력합니다. 윈도우를 하나 띄우고 타이틀바에 "Simple example"이라는 문자열을 출력합니다.


#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[]) {

   QApplication app(argc, argv);

   QWidget window;

   window.resize(250, 150);
   window.setWindowTitle("Simple example");
   window.show();

   return app.exec();
}




현재 프로젝트 디렉토리에는 소스코드만 있습니다.


pi@raspberrypi:~/SimpleQtExample $ ls

simple.cpp




3-2. qmake -project 명령을 사용하면 qt 프로젝트 파일을 생성해줍니다.

qt 프로젝트 파일의 정보를 가지고 Makefile을 만들게 됩니다.


pi@raspberrypi:~/SimpleQtExample $ qmake -project




프로젝트 파일은 확장자가 pro인 파일이 자동으로 생성됩니다.


pi@raspberrypi:~/SimpleQtExample $ ls

SimpleQtExample.pro  simple.cpp




3-3.  qt 프로젝트 파일이 생성될 때, qt 코드에서 사용중인 qt 모듈 이름이 자동으로 추가되지 않습니다.  

qt 프로젝트 파일을 열어서 사용중인 qt 모듈 이름을 추가해줘야 합니다.



사용 중인 qt 모듈 이름을 찾는 방법입니다.

우선 locate 패키지를 설치해야 합니다

pi@raspberrypi:~/SimpleQtExample $ sudo apt-get install locate




예제 코드에서 인클루드하고 있는 QApplication과 Qwidget 찾아보면  두 개 모두 QtWidgets 디렉토리에 포함되어 있습니다.  

사용하고 있는 모듈 이름은 디렉토리 이름에서 Qt를 빼고 소문자로 변환한 widgets가 됩니다.


pi@raspberrypi:~/SimpleQtExample $ sudo find / | grep QApplication

/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QApplication

/usr/include/arm-linux-gnueabihf/qt5/QtGui/QApplicationStateChangeEvent

find: ‘/run/user/1000/gvfs’: Permission denied
pi@raspberrypi:~/SimpleQtExample $ sudo find / | grep QWidget

/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetItem

/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetData

/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetItemV2

/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidgetAction

/usr/include/arm-linux-gnueabihf/qt5/QtWidgets/QWidget

/usr/include/arm-linux-gnueabihf/qt5/QtGui/QWidgetMapper

/usr/include/arm-linux-gnueabihf/qt5/QtGui/QWidgetList

/usr/include/arm-linux-gnueabihf/qt5/QtGui/QWidgetSet

find: ‘/run/user/1000/gvfs’: Permission denied




다음과 같이 SimpleQtExample.pro 파일에  widgets를 추가해줍니다.  

core와 gui는 디폴트로 추가되어 있으므로 적지 않아도 됩니다.


######################################################################
# Automatically generated by qmake (3.0) Sun Dec 31 00:22:44 2017
######################################################################

QT += widgets
TEMPLATE = app
TARGET = SimpleQtExample
INCLUDEPATH += .

# Input
SOURCES += simple.cpp




3-4. qmake 명령으로 Makefile을 생성합니다.

Makefile은 다음 두 가지 과정을 자동화하기 위해 필요한 것들을 기술하고 있습니다.


  • 컴파일러로 소스 코드 파일을 컴파일하여 오브젝트 파일을 생성

  • 링커를 사용하여 오브젝트 파일과 라이브러리 파일을 결합하여 실행 파일을 생성



pi@raspberrypi:~/SimpleQtExample $ qmake




Makefile이 프로젝트 폴더에 생성됩니다.


pi@raspberrypi:~/SimpleQtExample $ ls

Makefile  SimpleQtExample.pro  simple.cpp




3-5. make 명령은  Makefile에 기술된대로 컴파일 및 링크를 실행합니다.


pi@raspberrypi:~/SimpleQtExample $ make




중간 결과물인  확장자 .o인 오브젝트 파일과 프로젝트 디렉토리와 동일한 이름을 갖는 실행파일이 생성되었습니다.  


pi@raspberrypi:~/SimpleQtExample $ ls

Makefile  simple.cpp  simple.o  SimpleQtExample  SimpleQtExample.pro




이제 실행시켜 보면 작은 윈도우가 띄어지고 타이틀바에 "Simple example" 이라는 문자열이 출력됩니다.


pi@raspberrypi:~/SimpleQtExample $ ./SimpleQtExample




MobaXterm으로 SSH 접속시 실행 결과를 바로 볼 수 있습니다.





https://mobaxterm.mobatek.net/





해봤어요 www.facebook.com/webnautes/

  1. 제로프레임 2017.04.05 09:56 신고

    항상 잘 보고 있습니다.

    여지껏 qtcreator 설치가 안되서 계속 골 머리 썩다가 걍 싹다 초기화 시키고 다시 처음부터 설치 중인데

    지금 막 sudo apt-get install qtcreator 하니 뭔가 다운로드를 시작했네요.

    위에 설정 하나도 안하고 걍 qtcreator 설치만 하라고 쳤는데, 라즈베리 미러 디렉토리에서 ilbqt5어쩌고 하는 파일들이 화면에 뜨는 것 보니 자동으로 qt5도 긁어오는건가보군요?

    • Favicon of https://webnautes.tistory.com webnautes webnautes 2017.04.05 10:45 신고

      특정 배포판 릴리즈때에 문제가 생겨서 추가할 부분으로 보입니다...

      최근에 나온 릴리즈에서 해결되서 입력이 필요 없을 수도 있습니다..

      qtcreator 설치시 의존성으로 qt 라이브러리가 같이 설치될것으로 보입니다..

      sudo apt-get install qtcreator 입력 후.. 나오는 목록을 확인해보시면 어떤 패키지들이 같이 설치되는지 보입니다..

      혹 컴파일중에 문제 생기면 해당 패키지만 추가로 설치하면 될거 같긴합니다..

    • Favicon of https://webnautes.tistory.com webnautes webnautes 2017.04.05 10:46 신고

      저도 다시 해봐야겠군요..

  2. Kernel 2018.09.19 12:40 신고

    좋은 정보 감사합니다.

    라즈베리파이3.0에 상기와 같이 인스톨 한 후에 QT Multimedia 예제인 audioout example을 다운로드하여 실행 해 봤는데, QAudio 클래스를 인식하지 못하고 있습니다. 혹시 추가로 해 줘야 할 것이 있을까요?

    3일째 인터넷을 뒤지고 있는데....못 찾았네요.....

    • Favicon of https://webnautes.tistory.com webnautes webnautes 2018.09.19 14:39 신고

      설치되는 Qt 버전이 Qt 5.7인데 Qt 5.11 예제를 사용하신듯 합니다.

      다음 링크에 있는 Qt 5.6 예제를 사용하세요.

      https://doc.qt.io/qt-5.6/qtmultimedia-multimedia-audiooutput-example.html

  3. Kernel 2018.09.22 15:52 신고

    말씀하신 것처럼 버전을 맞춰보니, 잘 되네요!!!
    감사합니다.

    그런데, 아래의 예제를 사용해서 오디오 출력을 3.5mm stereo jack으로 나오게 하려고 하는데, 어떻게 해야 할까요?
    http://doc.qt.io/qt-5.6/qtmultimedia-multimediawidgets-player-example.html

    상기의 예제를 활용하여 오디오재생기를 만들고 있는데, 설정을 어떻게 바꿔도 계속 HDMI로 오디오가 나오네요....
    인터넷을 계속 뒤져 봐도 그런 문제가 있다는 사람은 있는데, 정확한 해결책은 못 찾겠고.....

    혹시 도움을 좀 받을 수 있을까요?

    • Favicon of https://webnautes.tistory.com webnautes webnautes 2018.09.22 15:54 신고

      아쉽게도 해본적이 없네요..

      raspi-config에서 hdmi와 3.5중에 하나 선택하는 걸로 알고 있습니다.

+ Recent posts

티스토리 툴바