호스트 개발환경 : 윈도우7
Step 1. 라즈베리파이 운영체제 설치
https://www.raspberrypi.org/downloads/raspbian/
RASPBIAN STRETCH 이미지를 다운로드 받고 sd메모리에 쓰고 부팅하여 ssh를 활성화 한다.
Step 2. 라즈베리파이 툴체인 다운로드
http://gnutoolchains.com/raspberry/
두가지 툴체인을 다운로드 받아야 하는데 최신 툴체인(raspberry-gcc6.3.0)에는 타겟(라즈베리파이3)과 sysroot 동기화 툴이 존재하지 않는다.
그래서 raspberry-gcc-4.9.2-r4 를 먼저 설치하고 동기화툴을 복사해오는 과정이 필요하다.
먼저 raspberry-gcc-4.9.2-r4를 설치하고 설치된 폴더에서 TOOLS 폴더를 raspberry-gcc6.3.0 설치 폴더에 복사한다.
이제 <SysGCC>\raspberry\TOOLS의 UpdateSysroot.bat를 실행한다.
Select를 클릭하고 라즈베리파이의 주소 및 계정정보를 입력 후 connect한다.
아래 그림과 같이 동기화 디렉토리들을 명시하고 Synchronize를 클릭한다.
그러면 라즈베리파이에서 위에 명시한 디렉토리들의 항목들을 가져오면서 sysroot 동기화가 될 것이다.
(동기화 작업은 라즈베리파이에 새로운 패키지를 설치하거나의 변화가 있을때 다시 해줘야한다.)
Step 3. Qt5.10 소스코드 다운로드 및 설치
온라인 인스톨러 다운로드 후 5.10(소스코드포함) 및 mingw530을 체크하여 설치한다. (기본 C:\ 에 설치한다.)
https://www.qt.io/download
Step 4. Qt 빌드
C:\Qt\raspberry_pi 폴더 생성(최종 인스톨될 폴더)
C:\Qt\5.10.0\raspberrypi3 폴더생성
시작 - Qt - 5.10.0 - MinGW 5.3.0 (32-bit) - Qt 5.10.0 for Desktop (MinGW 5.3.0 32 bit) 실행
C:\Qt\5.10.0\raspberrypi3 로 이동
아래 명령을 통해 컴파일러 전체경로가 나오는지 확인하고 그렇지 않다면 툴체인 경로를 환경변수에 등록해줘야 한다.
C:\Qt\5.10.0\raspberrypi3>which arm-linux-gnueabihf-g++
configure실행 (여기서는 opengl es2 옵션 추가 및 QPA플러그인으로 EGLFS로 선택된다. 또한 빠른 빌드를 위해 예제를 포함한 몇가지는 제외하였다.)
만약 x윈도우 시스템에서 동작 되길 원한다면 다음 글을 참고하자: https://forum.qt.io/topic/83700/raspberry-pi-3-compile-with-x11-eglf-not-wanted/5
C:\Qt\5.10.0\raspberrypi3>..\Src\configure -opensource -confirm-license -release -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE="C:\SysGCC\raspberry\bin\arm-linux-gnueabihf-" -prefix /usr/local/qt5pi -extprefix "C:\Qt\raspberry_pi" -hostprefix "C:\Qt\raspberry_pi" -nomake examples -nomake tests -no-use-gold-linker -qt-pcre -skip qtscript -skip qttools -skip qtserialbus
C:\Qt\5.10.0\raspberrypi3>mingw32-make -j4 C:\Qt\5.10.0\raspberrypi3>mingw32-make install
위과정을 거치면 컴파일된 라이브러리들이 C:\Qt\raspberry_pi 폴더에 인스톨 된다. (python이 설치되어 있지 않으면 실패할 수 도 있다.)
Step 5. 배포
<SysGCC>\raspberry\TOOLS\PortableSmartty 에 있는 SmarTTY를 이용하거나 다른 SSH 클라이언트를 이용하여 라즈베리파이에 접속한다.
그다음 /usr/local/qt5pi 디렉토리를 만든다. (아래 명령 참고)
pi@raspberrypi:/opt $ cd /usr/local/ pi@raspberrypi:/usr/local $ sudo mkdir qt5pi pi@raspberrypi:/usr/local $ sudo chown pi qt5pi/
이제 컴파일된 라이브러리들을 타겟에 배포 하기위해 WinSCP를 다운로드하고 설치한다. (SmarTTY의 SCP 기능으로도 가능하다)
https://winscp.net/
WinSCP를 실행하고 타겟에 접속한다.
/usr/local/qt5pi 디렉토리로 업로드
업로드는 몇 분 정도 소요된다.
업로드가 완료되면 이제 라즈베리파이에서 Qt어플리케이션을 실행 시킬 수 있다.
윈도우에서 Qt Creator를 이용하여 라즈베리파이로 원격 실행에 관한 내용은 이곳을 참고하면된다.
여기다 질문을 남겨도 될지 모르겠습니다만은...
이 글 내용을 그대로 따라했는데요.
configure 명령에서는 warning 이 한개 뜨긴 합니다만 일단은 정상적으로 된것 같은데, (혹시나 싶어 python도 설치하였습니다.)
mingw32-make 명령에서 error가 발생합니다.
에러 내용은 이러합니다.
c:/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/6/../../../../arm-linux-gnueabihf/bin/ld.exe:QtCore.version:0: syntax error in VERSION script
collect2.exe: error: ld returned 1 exit status
mingw32-make[3]: *** [Makefile:1136: ..\..\lib\libQt5Core.so.5.10.0] Error 1
mingw32-make[3]: Leaving directory 'C:/Qt/5.10.0/raspberrypi3/qtbase/src/corelib'
mingw32-make[2]: *** [Makefile:225: sub-corelib-make_first] Error 2
mingw32-make[2]: Leaving directory 'C:/Qt/5.10.0/raspberrypi3/qtbase/src'
mingw32-make[1]: *** [Makefile:49: sub-src-make_first] Error 2
mingw32-make[1]: Leaving directory 'C:/Qt/5.10.0/raspberrypi3/qtbase'
mingw32-make: *** [Makefile:80: module-qtbase-make_first] Error 2
구글링을 며칠째 하고 있는데 도저히 답이 안나오네요.
이부분에 대해서 아시면 답변 좀 부탁드립니다.