http://blog.naver.com/swind1980/80027239724
블로그 > zzang8713님의 블로그 http://blog.naver.com/zzang8713/120023319720 Qtopia-2.1.1 설치 매뉴얼 (2005 . 5 . 6) 이문서는 최민석(joy21c@gmail.com)님꼐서 쓰신글입니다 ! 1. 범용 PC(x86)에 설치 범용 PC는 x86계열의 시스템이다. 1.1 설치 환경 - CPU : P-4 1.5GHz - RAM : 384MB - HDD : 40GB - O/S : Redhat9(kernel version : 2.4.20-8) 1.2 필요한 라이브러리 - e2fsprogs - jpeg 위 라이브러리들은 이미 설치되어 있으므로 현재로서는 다시 설치 할 필요가 없다. 그러나 임베디드 장치에 Qtopia를 설치하기 위해서는 장치에 맞게 컴파일해서 설치해 주어야 한다. 1.3 필요한 소스 - Tmake 1.13(또는 그 이상 버전) - Qt/X11 3.3.x - Qt/X11 2.3.2 - Qt/Embedded 2.3.10(또는 그 이상 버전, 반드시 2.3버전대의 소스가 필요) - Qtopia 2.x 여기서 사용된 소스는 특정버전이 필요한 경우를 제외하고는 최신버전을 사용하였다. 사용된 버전은 아래와 같다. - Tmake 1.13 - Qt/X11 3.3.4 - Qt/X11 2.3.2 - Qt/Embedded 2.3.10 - Qtopia 2.1.1 1.4 압축 풀기 압축을 풀고 알아보기 쉽게 디렉토리 명을 변경한다. Qt/Embedded와 Qtopia는 임베디드 장치에 포팅 시 다시 컴파일 해야하므로 범용 PC용과 임베디드 장치용으로 디렉토리를 분리시켜 놓는 것이 좋다. 디렉토리 명에 x86이란 접미어를 붙인다. 1) Tmake 1.13 # tar zxvf tmake-1.13.tar.gz 2) Qt/X11 3.3.4 # tar zxvf qt-x11-free-3.3.4.tar.gz # mv qt-x11-free-3.3.4 qt-x11-3.3.4 3) Qt/X11 2.3.2 # tar zxvf qt-x11-2.3.2.tar.gz # mv qt-2.3.2 qt-x11-2.3.2 4) Qt/Embedded 2.3.10 # tar zxvf qt-embedded-2.3.10.tar.gz # mv qt-2.3.10 qt-embedded-2.3.10-x86 5) Qtopia 2.1.1 # tar qtopia-free-source-2.1.1.tar.gz # mv qtopia-free-2.1.1 qtopia-2.1.1-x86 1.5 환경변수 설정 다음의 환경변수를 설정한다. TMAKEDIR : TMake가 설치된 경로 DQTDIR : Qt/X11 3.3.4 소스 경로 QT2DIR : Qt/X11 2.3.2 소스 경로 QTEDIR : Qt/Embedded 2.3.10 소스 경로 QPEDIR : Qtopia 2.1.1 소스 경로 여기서 작업디렉토리는 /Work/qt 이므로 다음과 같이 설정했다. # export TMAKDIR=/Work/qt/tmake-1.13 # export DQTDIR=/Wrok/qt/qt-x11-3.3.4 # export QT2DIR=/root/Wrok/qt/qt-x11-2.3.2 # export QTEDIR=/root/Work/qt/qt-embedded-2.3.10-x86 # export QPEDIR=/root/Work/qt/qtopia-2.1.1-x86 이 환경변수들은 프로그램 컴파일 시 영향을 미치므로 정확히 설정해야 한다. 1.6 Build configure 시 질문이 나오면 yes를 입력한다. 1) Qt/X11 3.3.4 # cd $DQTDIR # export QTDIR=$DQTDIR # export PATH=$QTDIR/bin:$PATH # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH # ./configure -fast -thread # make sub-src # cd tools/linguist/lrelease # make # cd ../lupdate # make # cd ../../designer/uilib # make # cd ../uic # make 2) Qt/X11 2.3.2 # cd $QT2DIR # export TMAKEPATH=$TMAKEDIR/lib/linux-g++ # export QTDIR=$QT2DIR # export PATH=$QTDIR/bin:$PATH # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH # ./configure -no-xft # make # mkdir $QTEDIR/bin # cp bin/uic $QTEDIR/bin/ 3) QVfb # cd $QTEDIR/tools/qvfb # tmake -o Makefile qvfb.pro # make # mv qvfb $QTEDIR/bin/ 4) Qt/Embedded # cd $QTEDIR # export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++ # export QTDIR=$QTEDIR # export PATH=$QTDIR/bin:$PATH # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH # cp $OPEDIR/src/qt/qconfig-qpe.h src/tools/ # ./configure -system-jpeg -no-xft -qconfig qpe -qvfb -depths 4,8,16,32 Phone Device용으로 Qtopia를 Build하기 위해서는 -keypad-mode 옵션을 줘야한다. # make sub-src 5) Qtopia # cd $QPEDIR
# export QTDIR=$QTEDIR # export PATH=$QTDIR/bin:$PATH # ./configure -edition pda -no-qtopiadesktop -prefix /Work/qt/opt-x86/Qtopia # make # make install Install를 실행하면 /Work/qt/opt-x86/Qtopia 디렉토리에 빌드가 완료된 Qtopia가 설치된다. 1.7 실행 1) 환경변수를 설정 # export QT2DIR=/root/Work/qt/qt-x11-2.3.2 # export QPEDIR=/opt/Qtopia # export QTDIR=$QPEDIR # export PATH=$QTDIR/bin:$QTEDIR/bin:$PATH # export LD_LIBRARY_PATH=$QTDIR/lib:$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH QT2DIR과 QTEDIR의 패스와 라이브러리를 설정하는 이유는 qvfb의 실행 때문이다. qvfb의 실행파일은 QTEDIR/bin에 있고 실행에 필요한 라이브러리는 QT2DIR/lib에 있다. QTDIR를 설정하지 않으면 폰트를 찾지 못해 Qtopia가 실행되지 않는다. LD_LIBRARY_PATH를 설정하지 않으면 Qtopia나 Applicaton이 실행되지 않는다. 만약, e2fsprogs 라이브러리와 jpeg 라이브러리가 패스가 설정된 다른 디렉토리에 있다면 Qtopia는 실행되지만 Application은 실행되지 않는다. 또는 e2fsprogs 라이브러리와 jpeg 라이브러리가 Qtopia/lib 디렉토리 내에 있다면 Qtopia 자체가 실행되지 않는다. 현재 Redhat9에서 설치 할 경우에는 e2fsprogs 라이브러리와 jpeg 라이브러리에 대해서 신경 쓰지 않아도 되지만 임베디드 장치에 포팅 할 경우에는 이 두 라이브러리가 중요하므로 주의를 기울여한다. 2) QVfb 및 Qtopia 실행 # qvfb -width 가로크기 -height 세로크기 & qvfb가 실행이 안되면 qvfb 실행파일이 있는 디렉토리가 패스 설정이 되어있는지 확인한다. 정상적으로 qvfb가 실행되었으면 Ctrl+C를 누른 후 # qpe 2. 임베디드 장치(ARM)에 설치 임베디드 장치는 ARM계열의 시스템이다. 2.1 설치 장치 - 한백전자 EMPOS-II - kernel version : 2.4.19-rmk4-pxa2-empx1 2.2 크로스 컴파일러 설치 크로스 컴파일러는 한백전자에서 제공되는 2.95.3버전을 사용했다. 1) /usr 디렉토리 밑에 압축을 푼다. # tar zxvf cross-tools.tgz 2) cross-tools/arm-linux 디렉토리로 이동해서 Symbolic Link를 만든다. # cd cross-tools/arm-linux # mv include/* ../include # rm -rf include # ln -s ../include include # mv lib/* ../lib # rm -rf lib # ln -s ../lib lib # mv shared/* ../shared # rm -rf shared # ln -s ../shared shared 그리고 패스 설정을 한다. # export PATH=/usr/cross-tools/bin:$PATH 2.3 필요한 라이브러리 Arm용으로 컴파일 1) e2fsprogs e2fsprogs 라이브러리를 http://e2fsprogs.sourceforge.net/에서 다운받는다. 다운 받은 파일의 압축을 풀고 설치한다. # tar zxvf e2fsprogs-1.36.tar.gz # cd e2fsprogs-1/36 # CC=arm-linux-gcc ./configure --host=arm-linux --build=i686 --prefix=/usr/cross-tools --enable-elf-shlibs # make # make install # make install-libs 2) jpeg jpeg 라이브러리를 http://www.ijg.org/에서 다운받는다. 다운 받은 파일의 압축을 풀고 설치한다. # tar zxvf jpegsrc.v6b.tar.gz # cd jpeg-6b # CC=arm-linux-gcc ./configure --host=arm-linux --target=arm-linux --build=i686 --prefix=/usr/cross-tools --enable-shared 여기까지 한 후 Makefile를 확인 및 수정한다. # vi Makefile CC= arm-linux-gcc AR= arm-linux-ar rc AR2= arm-linux-ranlib 위 세 가지 항목이 위와 같이 설정되어 있는지 확인하고 안 되어 있다면 위와 같이 수정한 후 컴파일 한다. # make # make install make 시 ./ld를 찾을 수 없다는 오류가 발생하면 위의 2.2에 따라 다시 크로스 컴파일러를 설치한 후 configure부터 다시 한다. 2.4 필요한 소스 - Qt/Embedded 2.3.10 - Qtopia 2.1.1 Tmake, Qt/X11 3.3.4, Qt/X11 2.3.2는 범용 PC에 설치된 것을 그대로 사용한다. 2.5 압축 풀기 디렉토리 명에 arm이란 접미어를 붙인다. 1) Qt/Embedded 2.3.10 # tar zxvf qt-embedded-2.3.10.tar.gz # mv qt-2.3.10 qt-embedded-2.3.10-arm 2) Qtopia 2.1.1 # tar qtopia-free-source-2.1.1.tar.gz # mv qtopia-free-2.1.1 qtopia-2.1.1-arm 2.6 환경변수 설정 다음의 환경변수를 설정한다. TMAKEDIR : TMake가 설치된 경로 DQTDIR : Qt/X11 3.3.4 소스 경로 QT2DIR : Qt/X11 2.3.2 소스 경로 QTEDIR : Qt/Embedded 2.3.10 소스 경로 QPEDIR : Qtopia 2.1.1 소스 경로 여기서 작업디렉토리는 /Work/qt 이므로 다음과 같이 설정했다. # export TMAKDIR=/Work/qt/tmake-1.13 # export DQTDIR=/Wrok/qt/qt-x11-3.3.4 # export QT2DIR=/root/Wrok/qt/qt-x11-2.3.2 # export QTEDIR=/root/Work/qt/qt-embedded-2.3.10-arm # export QPEDIR=/root/Work/qt/qtopia-2.1.1-arm QTEDIR과 QPEDIR이 범용 PC에서 설치할 때와 달라진다. 이 환경변수들은 프로그램 컴파일 시 영향을 미치므로 정확히 설정해야 한다. 2.7 Build 전 해야 할 일 빌드하기전 몇 가지 해야 할 일이있다. 우선 $QPEDIR/src/libraries/qtopia 디렉토리에 보면 custom-linux로 시작하는 파일들이 있다. 그 파일들을 보면 다음과 같은 소스파일들이 있다. custom-linux-cassiopeia-g++.cpp custom-linux-generic-g++.cpp custom-linux-innovator-g++.cpp custom-linux-ipaq-g++.cpp custom-linux-sharp-g++.cpp custom-linux-x86-g++.cpp Qtopia Configuration 시 custom-qtopia.cpp라는 Symbolic Link가 생성되는데 이 Symbolic Link는 위 파일들 중 하나와 연결된다. 범용 PC의 경우 custom-linux-generic.cpp와 연결된다. 2.8에 보면 Qtopia configure 옵션에 linux-arm-g++를 준다. 이 옵션을 주면 custom-qtopia.cpp는 custom-linux-arm-g++.cpp와 연결된다. 그런데 Qtopia 소스에는 custom-linux-arm-g++.cpp 라는 파일이 없다. 따라서 다음과 같이 직접 이 파일을 만들어 줘야한다. # cp $QPEDIR/src/libraries/qtopia/custom-linux-generic-g++.h QPEDIR/src/libraries/qtopia/custom-linux-arm-g++.h # cp $QPEDIR/src/libraries/qtopia/custom-linux-generic-g++.cpp QPEDIR/src/libraries/qtopia/custom-linux-arm-g++.cpp 그리고 $QPEDIR/etc 디렉토리를 보면 다음과 같은 파일들이 있다. defaultbuttons-generic.conf defaultbuttons-ipaq.conf defaultbuttons-sharp.conf 여기에도 defaultbuttons.conf 이라는 Symbolic Link가 생성된다. 범용 PC의 경우 defaultbuttons-generic.conf와 연결된다. 마찬가지로 Qtopia configure 옵션에 linux-arm-g++을 주면 defaultbuttons-arm.conf와 연결되는데 여기에도 defaultbuttons-arm.conf 이라는 파일이 없으므로 다음과 같이 직접 만들어 줘야한다. # cp $QPEDIR/etc/defaultbuttons-generic.conf $QPEDIR/etc/defaultbuttons-arm.conf 임베디드 장치에 맞게 소스를 수정할 사항이 있으면 수정한다. 여기서는 EMPOS-II의 Touch Screen사용 을 위해 업체에서 제공하는 정보를 참조하여 소스 코드를 수정했다. 2.8 Build 1) Qt/Embedded # cp $QT2DIR/lib/libqt.so* $QTEDIR/lib/ # mkdir $QTEDIR/bin/ # cp $QT2DIR/bin/uic $QTEDIR/bin/ # cd $QTEDIR # export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++ # export QTDIR=$QTEDIR # export PATH=$QTDIR/bin:$PATH # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH # cp $OPEDIR/src/qt/qconfig-qpe.h src/tools/ # ./configure -xplatform linux-arm-g++ -system-jpeg -no-xft -qconfig qpe -no-qvfb -depths 4,8,16,32 Phone Device용으로 Qtopia를 Build하기 위해서는 -keypad-mode 옵션을 줘야한다. # make sub-src 5) Qtopia # cd $QPEDIR # export QTDIR=$QTEDIR # export PATH=$QTDIR/bin:$PATH # ./configure -xplatform linux-arm-g++ -edition pda -no-qtopiadesktop -prefix /Work/qt/opt-arm/Qtopia # make # make install Install를 실행하면 /Work/qt/opt-arm/Qtopia 디렉토리에 빌드가 완료된 Qtopia가 설치된다. 2.9 Build 후 해야 할 일 Build가 완료되었으면 장치에 퓨징하기 전 e2fsprog 라이브러리와 jpeg 라이브러리를 Qtopia에 포함시켜야 한다. 퓨징할 장치에서 이 라이브러리들을 지원해준다면 이 과정은 생략해도 된다. # cp /usr/cross-tools/lib/libuuid.* /Work/qt/opt-arm/Qtopia/lib/ # cp /usr/cross-tools/lib/libjpeg.* /Work/qt/opt-arm/Qtopia/lib/ 2.10 실행 Qtopia를 장치에 포팅 후 다음과 같이 실행한다. 1) 환경변수를 설정 Empos-II에서는 Qtopia가 /jffs/Qtopia 디렉토리에 들어가게 된다. # export QPEDIR=/jffs/Qtopia # export QTDIR=$QPEDIR # export PATH=$QTDIR/bin:$PATH # export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 2) Qtopia 실행 # qpe & Qtopia 최초 실행 시 환경설정을 하게 되는데 설정된 환경설정 파일들은 홈 디렉토리 내에 저장된다. 홈 디렉토리가 램 디스크 상에 존재한다면 재부팅 시 환경설정 파일들이 없어지므로 다시 환경설정을 해야만 한다. 따라서 홈 디렉토리에 환경설정 파일들을 저장하도록 램 디스크를 수정해야 한다. 3. QT/X11 3.3.x 설치 Qt/X11 2.3.2에 있는 Qt Designer는 Qtopia 2.1.1의 Application Project를 읽지 못한다. 따라서 Qt/X11 3.3.4 에 있는 Qt Designer를 설치해서 사용해야 한다. 이것은 이미 리눅스에 패키지로 설치되어 있을 수도 있다. 3.1 필요한 소스 - Qt/X11 3.3.x 3.2 압축 풀기 # tar zxvf qt-x11-free-3.3.4.tar.gz # mv qt-x11-free-3.3.4 qt-x11-3.3.4 3.3 환경변수 설정 다음의 환경변수를 설정한다. QTDIR : Qt/X11 3.3.4를 설치 할 디렉토리 PATH : Qt/X11 3.3.4 실행파일 디렉토리 MANPATH : Qt/X11 3.3.4 MAN Page 디렉토리 LD_LIBRARY_PATH : Qt/X11 3.3.4 Qt 라이브러리 디렉토리 다음과 같이 환경파일을 수정한다. #vi ~/.bash_profile QTDIR=/usr/local/qt PATH=$QTDIR/bin:$PATH MANPATH=$QTDIR/man:$MANPATH LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH export QTDIR PATH MANPATH LD_LIBRARY_PATH 3.3 빌드 # ./configuer # make |