본문 바로가기

Programming/임베디드

QT Embedded 설치 (QT Virtual FrameBuffer포함)

Qt를 이용한 임베디드 개발 환경 설치 -작성자 최병헌-
Os- redhat 7.3(2.4.18-3) -
QT/Embedded설치
1.소스를 다운받자..^^
-www.trolltech.com에서 접속해서 다운받을수도 있으며..
-ftp주소는 ftp.trolltech.com/qt/source에서 다운받자..
여기서는 qt-embedded-2.3.2.tar.gz(툴킷)를 다운받도록한다…
]# mv qt-embedded-2.3.2.tar.gz /usr/local/src/ ----여기로 이동(자기맘)
]# tar zxvf qt-embedded-2.3.2.tar.gz
]# mv qt-2.3.2 qte-2.3.2
]# cd qte-2.3.2/
여기서 INSTALL파일을 열어보면 Qt/Embedded를 설치하는 방법이 대해서 나와있다…
***설치전 환경설정을 해야 한다***--사용하는 쉘에 따라 환경설정방법이 약간다르다 여기서는 bash,ksh,zsh,sh경우만 하기로 한다…^^--------------------------------
※bash,ksh,zsh,sh일경우
]#QTDIR=/usr/local/src/qte-2.3.2
]#LD_LIBRARY_PATH=/usr/local/src/qte-2.3.2/lib:$LD_LIBRARY_PATH
]#export QTDIR LD_LIBRARY_PATH
※QTDIR은 Qt가 설치되어 있는 디렉토리 우리 같은 경우는 /usr/local/src/qte-2.3.2겠죠
※ LD_LIBRARY_PATH 는 Qt에서 사용하는 공유 라이브러리가 있는 디렉토리..^^
이제 환경설정은 끝났고 설치를 시작하자…
]# ./configure
1. 번째 질문 라이센스에 동의하는네…
-yes라고 쓴다
2.feature configuration..
-5를 선택
3.color depth를
-16을 선택한다
4.Qt Virtual Framebuffer을 지원하겠냐고 물어본다
-yes라고 답한다
설정이 다 끝났으면
creating makefiles…
Qt is now configured for building .Just run make…이런 메시지가 뜬다..
여기까지 이상이 없다면^^컴파일을 시작한다…
]#make
컴파일이 끝났으면..
]#cd $QTDIR/lib
]# ls
4개의 라이브러리를 확인하자..
libqte.so---libqte.so.2.3.2
libqte.so.2---libqte.so.2.3.2
libqte.so.2.3---libqte.so.2.3.2
libqte.so.2.3.2
파일이 있는지 확인하고 링크도 학인하자


Qt Virtual FrameBuffer설치
1.먼저 프레임 버퍼가 무언지부터 알아보자..
-리눅스에 그래픽화면은 XFree86이라는 PC용 X윈도우인데 그래픽을 제공하는 PDA같은 임베디드 시스템에 적용하기에는 여러가지 문제가 있다..(왜냐화면 너무 덩치가 크기때문이다)그래서 임베디드 시스템에서 X-윈도우를 사용하지 않고 커널수준에서 직접 그래픽카드의 비디오램을 접근하는 방식을 사용하는데 프레임버퍼기능도 이런 화면제어 기술이다..
커널안에서는 8bitcolor에서 24bitcolor까지 다양한 console을 화면을 지원한다…
그런데 리눅스에서 작업을 하다보면..X윈도우화면과 프레임버퍼 콘솔화면을 와따 갔다하기가 번거롭다..그래서 X원도우상에서 프레임버퍼화면을 띄워서 emulation하는 가상 프레임버퍼기능이 있는데..그것이 virtual 나부랭이다…^^(자세한 사항은 kldp.org를참조하세요 저도 여기까지)
2.부트로더에 내용을 수정한다..
a.lilo인경우
ex>
]#vi /etc/lilo.conf
lba32
boot=/dev/had
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
vga=0x317 #FrameBuffer Console:1024*768,16bit Color
image=/boot/vmlinuz-2.2.17
lable=linux
read-only
root=/dev/hda3

b.grub인 경우<청눅스 자료참조>
/boot/grub/grub.conf파일이 설정파일입니다.

kernel 이란 줄이 있는데 마지막에 vga=0x317하고 붙여주면 끝입니다.

kernel /boot/vmlinuz-2.4.7-10 ro root=/dev/hda2 vga=0x317

다음과 같이 설정한다음 Rebooting,을한다..
3.이제 커널에서 프레임 버퍼를 지원하도록 커널을 컴파일 해야 한다..
설치시에 커널설치부분을 체크하는분 같은 경우는 상관없고 체크안하신분들은 하나를 받아야 겠죠..
※커널컴파일
]#cd /usr/src/linux2.*.*
]#make menuconfig
Code maturity level options을 선택하여
<*>Prompt for development and /or incomplete code /drivers
다시 아까전 첫화면으로 Exit로 선택하여 돌아오고
Console drivers를 선택한여
Frame-buffer support 선택하여
<*>Virtual Frame Buffer support
<*>Advanced low level level driver options
<*>8bpp packed pixels support
<*>16bpp packed pixels support
<*>24bpp packed pixels support
<*>32bpp packed pixels support
선택한후 저장을 하고 나온다..
]#make dep && make clean && make && make install && make modules && make
modules_install
4.Qt Virtual FrameBuffer설치
ftp.trolltech.com/qt/source/qt-x11-2.3.2.tar.gz를 다운받자
]# tar zxvf qt-x11-2.3.2.tar.gz
]# mv qt-x11-2.3.2 /usr/local/src/qtx-2.3.2
]#cd /usr/local/src/qtx-2.3.2/
설치전환경설정(bash, ksh ,zsh, sh경우)
]# QTDIR=/usr/local/src/qtx-x11-2.3.2
]# LD_LIBRARY_PATH=/usr/local/src/qtx-x11-2.3.2/lib:$LD_LIBRARY_PATH
]# export QTDIR LD_LIBRARY_PATH
]# ./confiqure
라이센스에 동의하냐고 묻는다..
-yes라고 답하면 자동으로 Makefile을 만들어준다.
]#make
컴파일이 끝나면.qvfb디렉토리로 이동하여 컴파일
]#cd /usr/local/src/qtx-x11-2.3.2/tools/qvfb
]#make
실행해보자..
./qvfb]#./qvfb –width 640 –height 480 –depth 16 &
virtual 프레임 버퍼 창이 튼다..

Qt/Embedded와 Qt Virtual FrameBuffer 설정마무리
]#cp /usr/local/src/qtx-2.3.2/tools/qvfb/qvfb /us r/local/src/qtx-2.3.2/bin
.bash_profille을 수정하자..
]# vi /root/.bash_profile
저같은경우
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
#삽입내용
QTDIR=/usr/local/src/qte-2.3.2
TMAKEPATH=/usr/local/src/tmake-1.8/lib/qws/linux-x86-g++
LD_LIBRARY_PATH=/usr/local/src/qte-2.3.2/lib:$LD_LIBRARY_PATH
PATH=$PATH:$QTDIR/bin:/usr/local/src/tmake-1.8/bin:/usr/local/src/qtx-2.3.2/bin
export QTDIR LD_LIBRARY_PATH PATH
export TMAKEPATH PATH
export USERNAME BASH_ENV PATH
로긴을 다시합니다..
다른방법
]# QTDIR=/usr/local/src/qte-2.3.2
]# LD_LIBRARY_PATH=/usr/local/src/qte-2.3.2/lib:$LD_LIBRARY_PATH
]# PATH=$PATH:$QTDIR/bin:/usr/local/src/qtx-2.3.2/bin
]#export QTDIR LD_LIBRARY_PATH PATH
하지만 .bash_profile파일을 수정하는게 더 좋다..
그이유는 고생하기 때문이다..^^
이제 환경변수에 qvfb가등록되었있으므로
]#qvfb –width 640 –height 480 –depth 16 & 프레임창을 띄운다..
]#cd $QTDIR -- (cd /usr/local/src/qte-2.3.2/)
예제 파일을 실행해보자..
]#cd examples/launcher
]#./launcher –qws
우와 화면을 조금 갖고 놀아보자..
에러가 없다면 임베디드 개발환경을 90%완성한것이다..
에러가 발생한다면..
1.Qt/Embedded디렉토리가 안맞는다고 한다면..
-echo $QTDIR을 쳐서 확인해보라/usr/local/src/qte-2.3.2가 맞는가
.bash_profiles을 수정한내용을 검사해 보라..
-로긴을 다시해보라..
2.error while loading shared libraries와 같은 에러가 발생한다면
echo $LD_LIBRARY_PATH
▷에러를 해결했다면 한가지 더 예제를 실행해보자
ㅡ프레임 창을 뜨운상태에서 프레임창 메뉴 file-Confiqure로 들어가서
size-240*320을 선택하고 Depth는 16bit를 서택학 ok를 누르자..
]#cd $QTDIR/examples/hello
]#./hello –qws





tmake설치
소스 파일이 여러 개일때 Makefile을 만들어서 컴파일 하게 된다.Qt 라이브러리를 사용해서 컴파일할대는 시그널과 슬롯등이 첨가되기 때무네 Makefile을 만들기가 쉽지않다…
Qt 라이브러리를 사용하는 소스의 Makefile을 쉽게 만들어 주는 것이 tmake이다
다운받은 곳
ftp.trolltech.com/freebies/tmake
]#ncftp ftp.trolltech.com,
]#cd freebies/tmake/
]#get tmake-1.8.tar.gz
]#tar zxvf tmake-1.8.tar.gz
]#mv tmake-1.8 /usr/local/src
tmake는 컴파일 할 필요없이 환경설정에 추가해주면된다..
아까 .bash_profile을 보면 tmake에 대한 환경설정부분이 있을것이다..^^
그냥 한다면
]#TMAKEPATH=/usr/local/src/tmake1.8/lib/qws/linux-86-g++
]#PATH=$PATH:/usr/local/src/tmake1.8/bin
]#export TMAKEPATH PATH
.bash_profile에서 섰다면 다시 해줄 필요 없겠죠..^^
tmake이용한 Makefile을 한번 만들어보자
]#cd /usr/local/src/tmake1.8/example
]#vi hello.pro
내용이 ~~~일것이다..Makefile을 만들어보자
]#cd /usr/local/src/tmake1.8/example
]# tmake hello.pro –o Makefile
혹 에러가 났다면 echo $TMAKEPATH에 경로가 맞는줄 확인하자
]#vi Makefile
Makefile에 내용중 LIBS -lqte가 있는지 확인하고 이것이 있다면 Qt/Embedded 환경에서
Makefile이 생성된것이다
※progen(프로젝트 파일을 자동 생성해주는 프로그램이다)
tmake1.8/bin에 있기에 PATH는 이미 설정했으므로
간단한 예제를 보자
]#cd /usr/local/src/tmake-1.8/example
]#progen –o hello2.pro hello.h hello.cpp main.cpp
좀더 쉽게 프로젝트 파일을 만들기
]#progen –o hello3.pro
좀더 자세한 내용은 /usr/local/src/tmake1.8/doc/tmake_ref.html을 참조하세요^^