그래픽 & 멀티미디어
이 글은 이미 왕초보 게시판에 "따라하기 시리즈"에 올려진 글입니다. 그럼에도 다시 글을 올리는 것은 QT용 게시판이 따로 있어서 글을 보시는데 편의를 드리고자 이곳에 다시 올렸습니다.
이전에도 이미 QT 2.x.x와 3.x.x 버전을 설치하는 방법과 각 버전에 따라 프로그램을 작성하는 방법에 대해 말씀을 드렸습니다만 이번에 다시 4.3.3 설치기를 말씀드리는 이유는,
- 이전의 3.x.x 와는 디자이너부터 프로그래밍하는 방법에 까지 많이 달라졌고,
- QT를 전문으로 하시는 분들께서 3.x.x 버전 보다는 4.x.x 버전을 사용하라는 권고 때문에
- 저도 QT를 4.x.x 버전으로 바꾸었습니다.
- 이런 사정으로 앞으로 QT에 대한 글도 4.x.x 가 위주가 될 것으로 생각됩니다.
이런 이유로 QT4 설치 방법을 올리게 되었습니다.
QT4 내려받기
이번에는 QT를 설치해 보겠습니다. QT는 ftp를 이용하여 내려 받는 것이 편합니다. ftp.trolltech.com에 연결하신 후, /qt/source로 들어 가신 후 X11 용과 임베디드용 두 개의 버전을 내려 받습니다.
- X11 용: qt-x11-opensource-src-4.3.3.tar.gz
- 임베디드용: qtopia-core-opensource-src-4.3.3.tar.gz
이 글을 작성하는 시점에서 버전은 4.3.3 입니다.
ftp 로 내려 받으면 편리합니다만, 가끔 ftp로 연결이 안되는 경우가 있습니다. 이럴 때에는 홈페이지에서 TrollTech Downloads 페이지를 이용합니다. 다운로드 페이지로 이동한 후 "Goto OpenSource Downloads" 페이지로 이동합니다. QT는 다중 플랫폼을 지원하기 때문에 내려 받을 수 있는 제품이 매우 다양합니다.
그중에 Qt Open Source Edition for C++ Developers: X11 Download를 선택합니다.
제가 내려 받은 버전은 qt-x11-opensource-src-4.3.3.tar.gz 입니다.
그리고 임베디드 보드를 위해 Qtopia Core Open Source Edition 을 내려 받습니다.
역시 같은 버전대인 qtopia-core-opensource-src-4.3.3.tar.gz 를 내려 받았습니다.
QT 설치하기
Linux의 터미널로 들어가서 적당한 곳에 압축파일을 풀어 놓습니다. 앞으로 저는 이 압축파일을 가지고 x11 용과 emabedded-arm 용을 위해 2가지를 설치하도록 하겠습니다. 즉, 하나는 x11에서 사용할 qt를, 또 하나는 embedded-arm을 위한 qt를 설치하고 작업에 따라 x11이나 arm 용으로 선택하도록 하겠습니다.
그리고 설치 장소를 아래와 같이 하겠습니다.
설치 장소 | 설치 내용 |
/qt4/qt-x11 | x11을 위한 qt |
/qt4/qt-arm | arm을 위한 qt |
이전 강좌에 올린 QT 설치기를 보시면 매우 복잡하고 어지럽습니다. 설치 중에 에러도 많이 나구요. 그러나 "따라하기 시리즈"를 그대로 따라해 오셨다면, 그리고 QT4를 설치하신다면 정말 놀라울 정도로 한방에 설치가 완료됩니다. 다만 시간이 무지하게 오래 걸릴 뿐입니다.
x11용 qt 설치
저는 /tmp에 qt-x11-opensource-src-4.3.3.tar.gz를 내려 받았습니다. 그리고 아래의 명령으로 풀었습니다.
]# tar zxvf qt-x11-opensource-src-4.3.3.tar.gz
정상적으로 풀리면 풀린 디렉토리로 들어가서 x11로 설치하기 위해 환경부터 잡습니다. x11은 설치 옵션이 간단하죠. 설치 위치만 지정했습니다. 라이센스에 동의합니다.
]# cd qt-x11-opensource-src-4.3.3 ]# ./configure --prefix=/qt4/qt-x11 This is the Qt/X11 Open Source Edition. You are licensed to use this software under the terms of either the Q Public License (QPL) or the GNU General Public License (GPL). Type 'Q' to view the Q Public License. Type 'G' to view the GNU General Public License. Type 'yes' to accept this license offer. Type 'no' to decline this license offer. Do you accept the terms of either license? yes
작업이 완료되면 컴파일과 설치를 합니다. gmake 와 gmake install 을 실행합니다.
Qt is now configured for building. Just run 'gmake'. Once everything is built, you must run 'gmake install'. Qt will be installed into /qt4/qt-x11 To reconfigure, run 'gmake confclean' and 'configure'. ]# gmake 시간이 엄청 걸림 (test -z "../../bin/" || cd "../../bin/" ; targ=`basename ../../bin/qtdemo`; objcopy --only-keep-debug
"$targ" "$targ.debug" && objcopy --strip-debug "$targ" && objcopy --add-gnu-debuglink="$targ.debug"
"$targ" && chmod -x "$targ.debug" ) ;
gmake[2]: Leaving directory `/tmp/qt-x11-opensource-src-4.3.3/demos/qtdemo'
gmake[1]: Leaving directory `/tmp/qt-x11-opensource-src-4.3.3/demos' 이와 같이 에러없이 종료되었다면 성공입니다. 휴~ 저 같은 경우 거의 3시간 정도 걸린듯 합니다. ^^; gmake instll로 이제 설치를 합니다. ]# gmake install 그래도 이 작업은 gmake 보다는 빨리 끝납니다. cp -f -r /tmp/qt-x11-opensource-src-4.3.3/mkspecs/win32-msvc /qt4/qt-x11/mkspecs/ cp -f -r /tmp/qt-x11-opensource-src-4.3.3/mkspecs/win32-msvc.net /qt4/qt-x11/mkspecs/ cp -f -r /tmp/qt-x11-opensource-src-4.3.3/mkspecs/win32-msvc2005 /qt4/qt-x11/mkspecs/ ]# 이렇게 에러없이 종료되면 성공입니다.
에러 없이 끝나다면 일단 성공입니다. 잘 설치되었는지 확인은 arm 설치까지 끝내고 하겠습니다.
arm 용 qt 설치하기
이번에는 tmp 에 qtopia-core-opensource-src-4.3.3.tar.gz 에 풀기를 했습니다. 그리고 환경을 잡아야 하는데 x11과는 달리 매우 옵션이 매우 깁니다. 혹시 복사해서 사용하실 분이 있을 지 몰라 아래에 따로 적습니다.
./configure -prefix /qt4/qt-arm -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16,24,32 |
이중에 -prefix /qt4/qt-arm 과 -embedded arm 을 Target 보드의 cpu 에 맞추어 입려하시면 되겠습니다. /qt4 에 cpu 에 맞추어 설치하시면 타켓 보드에 맞추어진 여러 개의 qt 를 설치할 수 있겠지요. ^^
]# tar zxvf qtopia-core-opensource-src-4.3.3.tar.gz ]# ./configure -prefix /qt4/qt-arm -embedded arm .... -depths 16,24,32 이후에 설치하는 방법은 x11과 동일합니다. ]# gmake 역시 무차케 오래 걸립니다. ]# gmake install
역시 아무런 에러없이 종료되었다면 성공적으로 설치된 것입니다.
설치가 제대로 되었는지 확인
이제 qt를 모두 설치했네요. 일단 설치가 제대로 되었는지 확인하려면 프로그램을 작성해서 실행해 보아야 겠지요. 제대로 설치되었다면 QT 디자이너를 실행할 수 있습니다. 디자이너를 실행하기 전에 X11을 위한 QT 환경부터 잡겠습니다.
/qt4 다렉토리에 아래의 스크립트를 준비합니다. 별다를 것 없습니다. 그냥 vi 로 만들거나 MS 윈도우에서 만들어서 복사해 주시면 되겠습니다. MS 윈도우에서 만드셨다면 파일 옵션을 utf-8로 변경하시고 저장하십시오.
]# cd /qt4 ]# vi .qtx #!/bin/bash export QTDIR=/qt4/qt-arm export PATH=$QTDIR/bin:$PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QTINC=$QTDIR/include export QTLIB=$QTDIR/lib export qt_prefix=$QTDIR 이제 저장하고 source 명령으로 환경을 설정합니다. ]# source .qte 앞으로 X11용 qt로 작업할 때에는 source .qte를 실행 시킵니다. 이제 디자이너를 실행해 보겠습니다. ]# designer
디자이너를 실행하면 아래와 같이 qt4 디자이너가 실행이 됩니다.
어떻게 잘 실행되나요? qt 를 이용하여 프로그램을 작성하면 되겠습니다. 프로그램을 작성은 내용이 길어질 듯해서 다음 시간에 하겠습니다.
저는 휴인스 pxa255-pro3 에서 qt를 사용하는 사람입니다.
커널은 2.6.21.1 버전이고 qt는 qt 4.3.3 을 사용했습니다.
일단 테스트 시에 터치 스크린에 관한 에러를 보여줍니다.
당연히 터치 스크린은 되지 않죠
qt에서는 터치스크린 장치를 사용할때 디바이스 파일을 /dev/ts 를 사용한다는 에러메시지를 보여줬습니다.
제 파일 시스템에는 /dev/ts0 이 있더군요
간단하게 심볼릭 링크를 걸어주니 터치까지 잘 돌아가더라고요^_^
ln -s /dev/ts0 /dev/ts
해서 터치스크린 관련 디바이스 파일을 연결시켜주시고 보드에서 qt를 실행하면 됩니다.^_^
(단. 디바이스 드라이버가 있어야겠죠?. 저는 커널에서 지원하는 듯합니다만(커널을 제가 안만들어서^_^)
강좌 감사 합니다. 혹시 컴파일 옵션 중에 iwmmxt 이 놈에 대해 아시면 설명 부탁 드립니다. 컴파일이 완료 되고 나면 엄청나게 큰 lib 파일들이 나올텐데 한 2mb 아래로 줄일수 있는 방법이 있을까요..
qconfig 옵션을 이용해서 하려면 하나 바꾸고 컴파일하고 이런 막노동을 해야 하니 정말 짜증 나던데..
좀더 쉬운 방법이 있는지요?
제가 시도하는 컴파일 옵션은 아래와 같습니다. qconfig는 아직 못 해 봤습니다.
==============================================================================================
./configure -release -platform qws/linux-x86-g++ -xplatform qws/linux-arm-g++ -embedded arm -confirm-license -no-cups -depths 16 -qt-gfx-transformed -shared -no-gif -no-nis -no-cups -no-stl -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 -no-sql-ibase -no-pch -no-libtiff -no-libmng -no-libjpeg -no-mmx -no-3dnow -no-sse -no-sse2 -no-openssl -no-iconv -no-qdbus -no-decoration-styled -no-gfx-linuxfb -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -no-kbd-tty -no-kbd-usb -no-kbd-sl5000 -no-kbd-yopy -no-kbd-vr41xx -no-kbd-qvfb -no-accessibility -no-feature-THREAD -no-feature-HTTP -no-feature-FTP -no-feature-NETWORKPROXY -no-feature-URLINFO -no-feature-HOSTINFO -no-feature-UDPSOCKET -no-qt3support -no-largefile -no-mouse-pc -no-mouse-bus -no-mouse-linuxtp -no-mouse-yopy -no-mouse-vr41xx -no-mouse-tslib -no-mouse-qvfb -no-glib iwmmxt
=============================================================================================
QT는 lib size가 너무 켜서 힘드는 군요... qte.3.3.6 컴파일 할때도 고빡 1주일 동안 lib size 줄이는 일만 했던 악몽이 나는 군요 그렇게 고빡 1주일 해서 3mb 초반정도로 줄였던 것 같은데... 4.x.x 버전에는 좀 더 쉬워 졌으면 했는데
별 차이가 없는 것 같아서 실망 입니다.
arm 용 qt 설치부분에 대해 문의드려요^^ 위 내용중에 보면
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
이번에는 tmp 에 qtopia-core-opensource-src-4.3.3.tar.gz 에 풀기를 했습니다. 그리고 환경을 잡아야 하는데 x11과는 달리 매우 옵션이 매우 깁니다. 혹시 복사해서 사용하실 분이 있을 지 몰라 아래에 따로 적습니다.
./configure -prefix /qt4/qt-arm -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16,24,32 |
이중에 -prefix /qt4/qt-arm 과 -embedded arm 을 Target 보드의 cpu 에 맞추어 입려하시면 되겠습니다. /qt4 에 cpu 에 맞추어 설치하시면 타켓 보드에 맞추어진 여러 개의 qt 를 설치할 수 있겠지요. ^^
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
라고 되어 있는데요~ 여기서 맨 마지막에 -prefix /qt4/qt-arm 과 -embedded arm 을 Target 보드의 cpu 에 맞추어 입려하시면 되겠습니다.<= 라는 말의 의미를 모르겠어서요^^;
참고로 제가 사용중인 타겟보드 cpu는 xcale pxa255 이구요
2440보드 구매 예정입니다 ! 수고하세요!
http://www.qtcn.org/download/qtopia-core-opensource-src-4.3.3.tar.gz 에서 qt중국 싸이트 입니다.
이라고 메시지가 뜨는데 해결은 어떻게 하는 건가요?
앞서 qt4는 설치 문제 없이 됬는데요.
arm용 qt 설치를 하다 qmake를 하였는데 이런 오류가 떳어요..
gmake[1]:arm-linux-g++; 명령을 찾지 못했음
gmake[1]: *** [.obj/release-shared-emb-arm/gatomic.o] 오류 127
gmake[1]: Leaving directory 'tmp/qtopia-core-opensource-src-4.3.3/src/corelib'
gmake: ***[sub-corelib-make default-ordered] 오류 2
무슨 오류죠? 머가 잘못된건가여?ㅠㅠ
추가로
EZ-X5에서 터치가 가능하도록 하는 방법도 기술해 주셨으면 감사하겠습니다.