본문 바로가기

Programming/임베디드

QT 설치 ( X11/x86용/ARM 용) 방법

============================================================================
 
1. 개요
 
이 문서는 QT 설치에 대한 전반적인 내용을 포함한다.
configuration 및 환경 설정은 위의 명시된 환경에 특성화되어있다.
 
qt 설치 문서는 크게 세가지 환경을 구축하는것을 설명한다.
QT/X11 을 설치하여 qvfb 를 생성한다.
QT/Embedded 를 x86용으로 컴파일하여 실제 타겟에 올라갈 어플리케이션을
호스트에서 테스트 할 수 있게 한다.
QT/Embedded 를 ARM용으로 컴파일하여 코드를 타겟용으로 크로스 컴파일 한다.

따라서 먼저 2개의 파일이 필요하다.
@ http://www.korone.net/bbs/derefer.php?url=ftp%3A%2F%2Fftp.trolltech.com%2Fqt%2Fsource%2F
- qt-embedded-free-3.3.3.tar.bz2
- qt-x11-free-3.3.3.tar.bz2

다운받은 파일을 설치할 위치는 /root/qt로 하겠다.
즉 /root/qt 디렉토리 내에 다운받은 두개의 파일을 옮겨놓는다.

2. QT/X11 설치

사실상 QT/X11을 설치하는 이유는 단지 qvfb를 설치하기 위해서이다.
QVFB (Qt Virtual Frame Buffer)는 호스트 환경에서 프레임 버퍼를 사용할수
있게 하는 가상 툴이다. QT/Embedded는 X 환경이 아닌 프레임 버퍼를 사용하므로
이를 X상에서 실행하기 위해서는 가상 프레임 버퍼 툴이 필요한데, 이것이
QVFB 이다.

따라서 QT/X11의 설치는 비교적 간단하다.
QT는 specific한 설치 위치는 정해진 것이 아니고,컴파일한 위치에 설치가 되며
추후 profile에 path를 설정해주어야 한다.

- 압축을 푼다.
[root@localhost qt]# tar xjf qt-x11-free-3.3.3.tar.bz2

- 생성된 디렉토리의 이름을 바꾸어준다 (정해진것은 아니다.)
[root@localhost qt]# mv qt-x11-free-3.3.3 qtx-3.3.3

- QT 설정을 해준다.
root.bash_profile 을 열어서 다음과 같은 부분을 추가한다.

[root@localhost qtx-3.3.3]# vi root.bash_profile

 # for using QT
QTDIR=/root/qt/qtx-3.3.3
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export QTDIR PATH MANPATH LD_LIBRARY_PATH

:wq (저장하고 빠져나온다)

- 현재 설정을 적용한다.

[root@localhost qtx-3.3.3]# source root.bash_profile

configuration
[root@localhost qt]# cd qtx-3.3.3
[root@localhost qtx-3.3.3]# ./configure
라이센스를 물어보면 'yes'라고 입력한다.

- 컴파일한다. 이때 컴파일 시간이 오래 걸릴수가 있으므로 필요한 것만 컴파일한다.

Makefile : 14 line 수정한다.
all: symlinks src-qmake src-moc sub-src sub-tools (뒤의것은 삭제)

컴파일이 끝나고 Enjoy Qt 어쩌고 나오면 정상적으로 설치가 된것이다.

- frame buffer 설정
리눅스 부팅시 frame buffer를 사용할수 있도록 설정해준다.
대부분의 배포판 (redhat, fedora) 에서는 기본 설정으로 프레임 버퍼를
사용할수 있으므로 재 컴파일할 필요는 없다.

[root@localhost qte-3.3.3]# vi /etc/grub.conf
title Fedora Core (2.6.13-1.1532_FC4)
    root (hd0,1)
    kernel /vmlinuz-2.6.13-1.1532_FC4 ro root=/dev/VolGroup00/LogVol00 vga=0x317 rhgb quiet
    initrd /initrd-2.6.13-1.1532_FC4.img

위와 같이 현재의 설정에 vga=0x317 를 추가해주고 재부팅한다.
재부팅시 펭귄 로고가 나오면 정상적으로 동작하는 것이다.

- qvfb 실행
[root@localhost qtx-3.3.3]# cd /tools/qvfb
[root@localhost qtx-3.3.4]# ./qvfb -depth 16

이렇게 했을때 자그마한 화면이 출력되면 정상적으로 설치가 된것이다.

3. QT/Embedded (x86) 설치

QT 임베디드를 host용으로 설치한다.

-압축을 푼다
[root@localhost qt]# tar xjf qt-embedded-free-3.3.3.tar.bz2

- 디렉토리 이름을 변경한다
[root@localhost qt]#  mv qt-embedded-free-3.3.3 qte-3.3.3

- 설정 변경
현재의 설정을 바꾸어준다.
[root@localhost qte-3.3.3]# export QTDIR=/root/qt/qte-3.3.3
[root@localhost qte-3.3.3]# echo $QTDIR
/root/qt/qte-3.3.3

- configuration

이 부분이 좀 어렵다..
호스트에 따라서 다르지만, Fedora Core 4 에서는 이렇게 하면 실행된다.
[root@localhost qt]# cd qte-3.3.3
[root@localhost qte-3.3.3]# ./configure -shared -thread -no-cups -qvfb -no-ipv6 -qt-mouse-linuxtp

라이센스에 동의하느냐고 물어볼때 'yes'라고 답하고 depth를 물어보면 3.16 bits 를 선택한다.

- 컴파일한다.
[root@localhost qte-3.3.3]# make

- 테스트
위에서 컴파일한 qvfb를 복사해온다.
(혹은 qvfb를 어디에서나 실행할수 있도록 /usr/bin에 복사한다.)
[root@localhost qte-3.3.3]# cp /root/qt/qtx-3.3.3/tools/qvfb/qvfb /usr/bin
[root@localhost qte-3.3.3]# qvfb -depth 16
Using display 0

다른 터미널을 띄워서
[root@localhost qte-3.3.3]# cd examples/hello/
[root@localhost hello]# ./hello -qws

qvfb에 창이 뜨고 hello, world 가 움직이면 정상적으로 동작하는 것이다.
examples/hello 가 없다고 나오면 make로 컴파일 해준다.
qvfb를 실행시킨 터미널에서

Semop unlock failure 식별자 제거됨
Semop lock failure 식별자 제거됨
Semop unlock failure 식별자 제거됨
Semop lock failure 식별자 제거됨

메세지가 반복해서 나오면 /etc/에서 qt로 시작하는 모든 파일들을 지워준다
[root@localhost qte-3.3.3]# rm -rf /etc/qt*

다시 실행한다.

3. QT/Embedded (ARM) 설치

QT/Embedded 를 ARM용으로 설치하기 위해서는 cross-compiler(혹은 toolchain) 가 있어야 한다.
툴체인의 설치에 대해서는 생략 하겠다.
툴체인의 위치는 /usr/arm-linux로 지정했다.

-압축을 푼다
[root@localhost qt]# tar xjf qt-embedded-free-3.3.3.tar.bz2

- 디렉토리 이름을 변경한다
[root@localhost qt]#  mv qt-embedded-free-3.3.3 qta-3.3.3

다시 한번 말하지만 디렉토리 이름은 상관이 없다.
이번 경우는 qt/embedded 의 arm용 이라서 그냥 qta-3.3.3이라고 한것이다

- 설정을 변경한다.
[root@localhost qte-3.3.3]# export QTDIR=/root/qt/qta-3.3.3
[root@localhost qte-3.3.3]# echo $QTDIR
/root/qt/qta-3.3.3

위에서 보았듯이 현재 QT에 관련된 설정은 root.bash_profile에 정의되어 있으므로
그 중에서 QTDIR 항목만 바꾸어 주면 나머지 항목들도 바뀌게 된다.

QT/X11 사용:         # export QTDIR=/root/qt/qtx-3.3.3
QT/Embedded(x86)사용:     # export QTDIR=/root/qt/qte-3.3.3
QT/Embedded(ARM)사용:     # export QTDIR=/root/qt/qta-3.3.3

이렇게 해주면 된다.

- configuration
컨피겨레이션 옵션은 다양할 것이다.
아래는 하이버스의 XHYPER255B 보드에서 동작한다.
[root@localhost qta-3.3.3]# ./configure -embedded ipaq -shared -depths 16 -no-cups -qt-libjpeg -qt-mouse-linuxtp

라이센스는 'yes'를 하고 depth 는 16을 선택한다.

- 컴파일
[root@localhost qta-3.3.3]# make

끝나면 설치가 성공한것이다. 간단한가..

- 보드에 포팅

보드에 보팅하는 방법은 각각 보드마다 다르므로
해당 보드 제조사에가면 자세한 자료가 있다.

하이버스:     http://www.korone.net/bbs/derefer.php?url=www.hybus.net
메리테크:     http://www.korone.net/bbs/derefer.php?url=www.meritech.co.kr (여긴 잘 없다)
휴인스:        http://www.korone.net/bbs/derefer.php?url=www.huins.com
한백전자:    http://www.korone.net/bbs/derefer.php?url=www.hanback.co.kr
FALINUX:    http://www.korone.net/bbs/derefer.php?url=www.falinux.com

http://www.koronet.net/