컴퓨터 공학/Qt

[ Qt 프로그래밍 ] Qt5.4 정적 빌드하기

혼새미로 2015. 11. 27. 02:03
반응형


upx391w.zip


전에 Qt4.8 버전에서의 정적빌드하는 방법에 대해 설명했는데,

이번에는 Qt5.4버전에서의 정적빌드에 대해 알아보겠습니다.

Qt4.8버전과 대략적으로 비슷하지만 약간 달라진 부분이 있습니다.

이제 설명을 시작하겠습니다.


http://www.qt.io/download-open-source/# 


먼저 위의 링크로 접속해서 Qt5.4 offline을 다운받아야 합니다.


하단에 Windows Host 제목의 Qt5.4.0 for Windows 32bit (MinGW 4.9.1, 852MB) 를 다운받아 설치합니다.

설치과정은 별다른 설정이 없으므로 생략합니다.


http://download.qt.io/official_releases/qt/5.4/5.4.0/single/

이제 위의 링크로 접속해서 소스코드를 다운받습니다.


qt-everywhere-opensource-src-5.4.0.zip


과 같은 이름의 파일이 있습니다.

해당 파일을 다운받습니다.


위의 Qt5.4 오프라인 버전을 설치하면 C:\Qt\Qt5.4.0\5.4폴더가 있습니다.

이 위치에 qt5-opensource-src-5.4.0.zip파일을 압축해제 해줍니다.


 


그러면 위와 같이 폴더가 존재하게 됩니다.

(위의 android_armv7은 아마 안보일겁니다. 제가 안드로이드버전을 설치해서 보이는 겁니다.)


C:\Qt\Qt5.4.0\5.4\qt-everywhere-opensource-src-5.4.0\qtbase\mkspecs\win32-g++


위의 경로에 보면 qmake.conf파일이 있습니다.

해당 파일을 메모장으로 열어줍니다.


중간에 QMAKE_LFLAGS가 있습니다.


QMAKE_LFLAGS            = -static -static-libgcc


다음과 같이 수정해줍니다.

그리고 저장한 후 닫아줍니다.


 


시작에서 Qt 프롬프트를 실행합니다.

위의 사진과 같은 곳에 Qt5.4.0 프롬프트가 존재할겁니다.(사진은 퍼온겁니다.)

 

콘솔창에 다음과 같이 입력합니다.

 

cd "C:\Qt\Qt5.4.0\5.4\qt-everywhere-opensource-src-5.4.0\qtbase"

그리고 다음을 입력합니다.

 

configure -static -release -opengl desktop -opensource

 

그리고 묻는 창에 y를 입력하여 configure를 진행합니다.

1분 내외로 작업이 끝나는데 이후에 다음과 같이 입력합니다.

 

mingw32-make sub-src

 

그러면 30분 내외의 시간동안 정적빌드에 들어갑니다.

 

전부 완료되면 다음과 같이 결과가 보입니다.

 

이제 창을 닫고 Qt Creator를 실행합니다.

 

메뉴바에서 Tool - options를 클릭합니다.

왼쪽의 Build &Run탭에서 Qt Versions 탭으로 간 다음, Add를 클릭합니다.

C:\Qt\Qt5.4.0\5.4\qt-everywhere-opensource-src-5.4.0\qtbase\bin

 

위의 경로에 보면 qmake.exe가 있습니다.

이것을 선택하고 열기를 누릅니다.

그리고 Version name을 적절히 변경해줍니다. 저는 Qt5.4.0(qt-static)으로 지었습니다.


다시 Kits 탭으로 가서 Add를 클릭합니다.

그리고 NameQt5 static으로 입력하고, Qt version을 방금 만든 Qt5.4.0(qt-static)으로 선택하고 OK를 클릭합니다.

이제 새로운 프로젝트를 만들어서 Release모드로 실행해보면 다음과 같이 제대로 빌드 후 실행이 되는 것을 확인할 수 있습니다.

 

빌드된 폴더에 들어가서 실행파일을 보니 용량이 14메가바이트로 굉장히 늘었음을 확인할 수 있습니다.

이제 이 파일을 Qt를 설치하지 않은 다른 컴퓨터에서 원활하게 실행할 수 있게됩니다.

여기까지가 Qt5.4버전에서의 정적빌드 방법입니다.

 

여기서 조금 더 개선된 방식을 사용하자면 용량을 줄이는 방법이 있습니다.

 

제가 첨부파일로 올린 upx391w.zip을 다운받아 압축을 풉니다.

저는 이곳에 upx.exe파일이 있습니다.

C:\Users\remoc_000\Desktop\upx391w\upx391w\upx.exe

 

그리고 방금 빌드한 파일은 다음 경로에 있습니다.

 

C:\Users\유저\Documents\Qt\build-qt_static_001-Qt5_static-Release\release\qt_static_001.exe

 

이제 명령 프롬프트를 실행합니다.

명령프롬프트는 시작 - 보조프로그램에 있습니다.

 

명령 프롬프트에 다음과 같이 입력합니다.

"C:\Users\유저\Desktop\upx391w\upx391w\upx.exe" -9 -o "C:\Users\유저\Documents\Qt\build-qt_static_001-Qt5_static-Release\release\result.exe" "C:\Users\유저\Documents\Qt\build-qt_static_001-Qt5_static-Release\release\qt_static_001.exe"

 

그러면 다음과 같이 압축이 진행됩니다.

사용하지 않는 코드는 버리는 과정입니다.

 

그러면 이렇게 완료가 됩니다.

 


그리고 result.exe파일이 생성되면서 용량은 5.4메가바이트로 1/3로 줄어듭니다.

이제 네이버 블로그에도 올릴 수 있게되었네요.

 

여기까지가 Qt5.4 정적빌드 방법입니다.

반응형