QT를 처음 학습할 때에는 QT/X11, QT/Embedded, QTopia 모두 설치해야 되는 줄 알았습니다. 그리고 반드시 QVFB를 준비해야되는 줄 알았습니다. 그러다 보니 설치 방법이 복잡하고 시간이 많이 걸렸죠. 거기다가 QT/X11, QT/Embedded, QTopia 세가지 프로그램에 대해 궁합이 맞는 버전으로 설치하려고 다시 설치하기를 여러 번했습니다.

더욱 한심한 것은 타겟 보드에 QT 프로그램을 실행하기 위해서는 QTopia를 설치했을 때 생성되는 이미지 파일이 반드시 있어야만 되는 줄 알았습니다. 즉, QTopia의 이미지 파일을 타겟 보드에 복사해 주어야 QT로 작성된 프로그램이 실행되는 줄 알았습니다. 웹에 의존하다 보니 귀동량을 완전히 엉뚱하게 했습니다.

그러나 실제 타켓 보드에는 QT/Embedded를 설치하면 생성되는 lib 디렉토리의 파일만 복사해 주면 되기 때문에 저 같은 경우 QTopia가 필요 없고, 대신에 PC에서 디버깅 하기 위한 QT/X11과 임베디드 용으로 컴파일하기 위한 QT/Embedded만 필요했습니다.

제가 사용하는 QT/X11은 QT 3.x.x 버전인데, 최근 리눅스를 설치하면 선택하여 바로 설치가 가능하기 때문에 별 다른 어려움이 없습니다. 그러므로 실제 설치하는 것은 QT/Embedded 3.3.8 뿐입니다. 즉, 가장 간단한 방법이 되겠습니다.

QT/X11이 없으시다면 리눅스의 패키지 관리자를 이용하시면 쉽게 설치하실 수 있습니다.

필요 파일 다운로드

ftp.trolltech.com - /qt/source/qt-embedded-free-3.3.8.tar.gz

E2fsprogs Ext2 Filesystem Utilities - e2fsprogs-1.40.2.tar.gz

ftp.scarlet.be - pub/freeware/SOURCES/jwpg-6b.tar.gz

압축 풀기

저는 QT를 /qt에 설치합니다. 즉, QT/Embedded를 타켓 보드에 맞추어 /qt 밑에 생성합니다. QT arm용을

]# cd /                                           <- root 디렉토리로 이동 
]# mkdir qt                                       <- /qt/ 디렉토리 생성
]# cd /qt <- /qt/ 디렉토리로 이동
]# zxvf /download/qt-embedded-free-3.3.8.tar.gz
]# mv qt-embedded-free-3.3.8/ qte-3.3.8-arm
]# tar zxvf /download/e2fsprogs-1.40.2.tar.gz
]# tar zxvf /download/jpeg-6b.tar.gz

uuid, jepg 라이브러리 설치

   arm 용 uuid  라이브러리 설치

]# cd /qt/e2fsprogs-1.40.2
]# ./configure --prefix=/usr/arm-linux --host=i386 --target=arm --enable-elf-shlibs --with-cc=arm-linux-gcc
]# make
]# make install
]# make install-libs

   arm 용 jpeg 라이브러리 설치

]# cd /qt/jpeg-6b
]# ./configure
]# vi Makefile 


    아래의 내용을 수정합니다.


   prefix = /usr            -> prefix = /usr/arm-linux
   CC = cc                  -> CC= arm-linux-gcc
   AR = ar rc               -> AR = arm-linux-ar rc
   AR2 = ranlib             -> RANLIB = arm-linux-ranlib

]# make 
]# make install-lib  

환경 파일 생성

]# cd /qt
]# vi .qte
#!/bin/bash
export QTDIR=/qt/qte-3.3.8-arm
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

QT-Embedded 설치

]# source /qt/.qte
]# cd $QTDIR/bin
]# cp /usr/lib/qt-3.3/bin/uic .
]# cd ..
]# ./configure -embedded arm -system-jpeg -shared -thread -no-cups -no-ipv6 -qvfb -depths 16 

    라이센스에 yes

    Building on:   linux-x86-g++-shared
    Building for:  linux-arm-g++-shared

    Thread support..................... no
    Configuration...................... qconfig-qpe.h

]# make

                             :

     Note: be sure to set $QTDIR to point to here or to wherever
           you move these directories.

     Enjoy!   - the Trolltech team

     make[1]: Leaving directory `/qt/qte-arm'

]# cd lib
]# file libqte.so.2.3.10
libqte.so.2.3.10: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
    -> 이렇게 ARM 용 파일이 만들어 졌다면 OK

    arm용 qpe에서도 jpeg 와 uuid 라이브러리를 사용할 수 있도록 라이브러리를 복사합니다.

]# cp /usr/arm-linux/lib/libuuid.* .
]# cp /usr/arm-linux/lib/libjpeg.* .
]# cp /usr/arm-linux/lib/libstdc++.so.5 .

arm 보드에서 QT 프로그램 실행

arm 보드에서 /app/qt/lib로 QT/Embedded lib를 복사한다고 가정하겠습니다.

   QT/Embedded의 lib 디렉토리를 통째로 타켓 보드에 복사하면 되는데,
   cp 명령을 사용하면 링크파일까지 일반 파일로 복사되기 때문에
용량이 무척 커지게 됩니다. 그러므로 반드시 tar를 이용하여 압축한 후에 타겟 보드에서 풀기를 합니다.
]# tar zcvf /공유폴더/qt-arm-lib.tar.gz /qt/qte-3.3.8-arm/lib 이제 arm-board 를 부팅하고 Host PC와 nfs로 연결합니다. [이 부분부터는 arm-board에서의 작업 내용입니다.] ]$ mount -t nfs -o nolock 192.168.10.50:/공유폴더 /mnt/nfs ]$ mkdir /app/qt ]$ cd /app/qt ]$ tar zxvf /mnt/nfs/qt-arm-lib.tar.gz QT 프로그램을 위해 환경 설정을 합니다. 또는 파일을 만들어 놓습니다.
]$ export QTDIR=/app/qt
]$ export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH Arm 보드에서 예제 프로그램 실행 보겠습니다. QT/Embedded가 설치된 디렉토리 안을 보시면 example/hello 디렉토리에 이미 hello 실행파일이 있습니다. 이 실행 파일을 공유 폴더에 복사한 후에 arm 보드에서 /mnt/nfs 디렉토리에서 직접 실행해 보십시오. ]$ /mnt/nfs/hello -qws

 

태그: *QT *그래픽