설치. ( qte에서 (보드없이)사용가능한 )
① CD 의 /kenel/mkimage를 /usr/bin와 /usr.src 에 옮긴다.
② /usr/src/linux-2.6.21 -xstation 으로 이동한다.
③ xstation에 기본적으로 설정된 환경을 적용합니다.
#make xstation_defconfig
④기본 설정 환경 이외에 설정될 환경을 적용합니다.
# make oldconfig
⑤ 마지막으로 커널 이미지를 생성합니다.
# make uImage
⑥ 툴 체인을 최상위로 이동 합니다.
#cp toolchain_ tar.gz /
⑦ 최상위에서 압축을 풀어줍니다.
# tar zxvf toolchain_tar.gz
⑧ 다음과 같은 경로에 설치가 된다.
/usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin
⑨ #cd /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin 으로 옮긴다.
⑩ path를 지정해 준다.
# vi /root/.bash_profile
PATH = $ PATH : $ HOME/bin
PATH = /usr/local/arm/gcc-4.0.2-glibc-2.3.6/arm-softloat-linux-gnu/bin:$PATH
⑪ 부팅을 해줘야 하는데 부팅후 오류를 방지하기위해 부팅을 하지 않고
# source /root/./bash_profile
⑫ #echo $PATH
⑬ 최상위 디렉토리로 가서
#arm - tab 키 두 번 해서 arm 파일 나오면 성공.!
(tool 체인 설치 끝)
⑭ qt에 대한 관리를 위해서 최상위 디렉토리에섯 qtdir이라는 디렉토리를 만듭니다.
#mkdir/qtdir
⑮해당 디렉토리로 이동합니다.
#cd /qtdir
⑯qt소스 및 관련 파일을 복사 해두기 위해서 qtsrc 디렉토리를 만듭니다.
#mkdir qtsrc
⑰qtsrc 디렉토리에 qt 컴파일에 필요한 파일들을 모두 복사합니다.
qt_install-file.tar.gz (터치 수정 파일 및 컴파일 스크립트)
qt-embedded-free-3.3.7.tar.gz(qt 3.3.7 임베디드 소스)
qt-x11-free-3.3.7.tar.gz (qt 3.3.7 x11소스)
tsilib-0.0.2.tar.bz2(터치 스크린 소스)
⑱압축을 모두 해제합니다. bz2 파일은
#tar jxvf tslib-0.0.2.tar.bz2 를 사용하여 압축을 해제 합니다.
⑲ 압축이 해제 되면, 파일명과 같은 디렉토리가 생성됩니다.
#mv /qtdir/qtsrc/qt-embedded-free-3.3.7 /qtdir/qta
#cp -rf /qtdir/qta /qtdir/qte
#mv /qtdir/qtsrc/qt-x11-free-3.3.7 /qtdir/qtx
#mv /qtdir/qtsrc/tslib-0.0.2 /qtdir/qta/tslib
⑳ qt-embedded 컴파일에 사용될 스크립트 파일을 복사합니다.
#cd /qtdir/qtsrc/install-file
#cp /qtdir/qtsrc/build-arm.sh /qtdir/qta
수정된 터치 패드 소스를 qta의 지정된 경로로 복사 합니다.
#cp -rf qmouselinuxtp* /qtdir/qta/src/embedded
x11용 QT를 설치하기 위해서 설치 디렉토리로 이동합니다.
#cd /qtdir/qtx
#./configure -shared -thread -no-cups
컴파일 설정을 해줍니다. 쉐어드 라이브러리는 사용하고 스레드를 사용하며, 일반적인 유닉스 프린팅 시스템(cups)을 사용하지 않겠다.
Makefile을 수정합니다.
#vim Makefile
"all : 항목애소 sub-tutorial 앞에 #을 붙여 줍니다. (#은 주석처리)
컴파일 해줍니다.
#make
컴파일 도중 라이센스 여부가 나오면 yes를 입력합니다.
컴파일이 완료되면, 기존에 호스트의 qt 심볼릭 링크들을 삭제 하거나 백업을 해 줍니다.
#mv /usr/bin/qmake /usr/bin/qmake-old
#mv /usr/bin/uic /usr/bin/uic-old
#mv /usr/bin/moc /usr/bin/moc-old
#mv /usr/bin/designer /usr/bin/designer-old
새로운 QT x11 심볼릭 링크를 생성 합니다.
#ln -s /qtdir/qtx/bin/qmake /usr/bin/qmake
#ln -s /qtdir/qtx/bin/uic /usr/bin/uic
#ln -s /qtdir/qtx/bin/moc /usr/bin/moc
#ln -s /qtdir/qtx/bin/designer /usr/bin/designer
#cd /qtdir/qtx/tools/qvfb
#make clean
#make
#ln -s /qtdir/qtx/tools/qvfb/qtfb /usr/bin/qvfb
정상적으로 qvfb가 실행되는지 확인해 보아야 합니다.
#qvfb
qtx.source 파일을 만들어 리부트 후 필요 시점에서 개발환경 설정을 해 줄 수 있도록 환경변수 변경 스크립트를 만들어 줍니다.
#vim /qtdir/qtx/qtx.source
넣어야 할 내용
#!/bin/sh
export QTDIR=/qtdir/qtx
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTINC=$QTDIR/include
export QTLIB=QTDIR/lib
qt-embedded를 컴파일 할 때 , 필요한 파일이 있습니다. qtx에 있는 uic가 qta의 bin 디렉토리에 있어야 하므로, uic 파일을 해당 디렉토리로 복사해 줍니다.
#cp /qtdir/qtx/bin/uic /qtdir/qta/bin
qte 디렉토리로 이동 합니다.
#cd /qtdir/qte
qte의 컴파일 환경을 설정해 줍니다.
./configure -shared -thread -no-cups -qvfb -no-nis -no-s시 -no-ipv6 -qt-libpng -qt-libjpeg
컴파일 해 줍니다.
#make
vi 명령어를 사용하여 qte.source 스크립트를 만들어 줍니다.
#vim /qtdir/qte/qte/source
#!/bin/sh
export QTDIR=/qtdir/qte
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$LD_LIBRARY_PATH$PATH
컴파일 테스트
#source /qtdir/qte/qte.source
#cd /qtdir/qte/examples/hello
#make
#qvfb&
# ./hello -qws
실행이 완료 되면 QVFB에 응용 프로그램이 구동되는 것을 볼 수 있습니다.
-embedded[arm] 설치
① QT arm 용 소스 디렉토리로 이동 합니다.
#cd /qtdir/qta
② 빌드 스크립트의 내용을 현재 장비 그리고 본 문서에 맞도록 일부 변경합니다.
#vim build-arm.sh
변경할 내용은 다음과 같다.
#!/bin/sh
#build tslib
cd tslib/
export CC=arm-softloat-linux-qnu-gcc
#./autogen.sh --host=arm-linux
./confiqure--host=arm-linux -prefix=/usr/src/linux-2.6.21-xstation
#make clean
.....이하 생략.....
③qstring.h 파일을 수정 합니다.
#vim qstring.h
196라인부터 202라인 까지의 내용을 주석처리를 하고 한 줄을 추가로 입력 해 줍니다.
/*
#ifdef Q_NO_PACKED_REFERENCE
ushort &unicode(){ return *(&ucs); }
#else
ushort &unicode(){ return ucs; }
#endif
*/
ushort &unicode() { ushort& tmp =ucs; return tmp;}
④ 크로스 컴파일 및 관련 라이브러리를 사용할수 있도록 qmake.conf를 설정 합니다.
196 라인 정도에 있는 QMAKE_INCDIR에 /qtdir/qta/include를 넣어 줍니다.
그리고 그 아랫줄에 QMAKE_LIBDIR에 /qtdir/qta/lib를 넣어 줍니다. 그리고 20여줄 아래에 보면 QMAKE_LIB_DYNLOAD에 -lts(엘티에스)를 추가 시켜 줍니다.
QMAKE_INCDIR = /qtdir/qta/include
QMAKE_LIBDIR = /qtdir/qta/lib
..(20여줄 생략)
QMAKE_LIBS_DYLOAD = -ldl -lts
......
수정이 끝나면, 저장하고 종료합니다. 종료가 다되면 컴파일을 시작할 수 있습니다.
⑤ 빌드 스크립트는 터치 패드 드라이버를 컴파일 하고, 그 이후에 필요한 헤더파일을 qta디렉토리로 복사해 줍니다. 복사된 뒤에, qta를 설정하고, 컴파일 합니다.
#build-arm.sh
⑥스크립트 수행 중 라이선스 부분에서 yes를 선택합니다.
⑦수행중 디스플레이 해상도 선택 부분에서 16을 선택 합니다.
(삼성 6410은 24를 지원 합니다.)
⑧컴파일이 정상적으로 종료되면 Enjoy! 라는 메시지를 확인 할 수 있습니다.
⑨컴파일이 완료 되어었으면, 라이브러리가 정상 컴파일 되었는지 확인합니다.
#cd/ qtdir/qta/lib
#file libqte-mt.so.3.3.7
ARM version 이라고 출력되었으면, 이것은 arm 보드에서 구동이 가능하다.
⑩프로그램시 qta로 환경설정을 바꿔주는 스크립트를 만든다.
#!/bin/sh
export QTDIR =/qtdir/qta
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QMAKESPEC=/qtdir/qta/mkspecs/qws/linux-arm-q++
export QTLIB = $QTDIR/lib
⑪타겟 포팅
#mkdir /nfsroot/qta
#체 /qtdir/qta/lib/libqte-mt* /nfsroot/qta
⑫보드에 적용
(타겟) #mount -t nfs ip :/mnt/nfs -o rw,rsize=1024,nolock
(타겟) #cd /usr/lib
(타겟) #cp /mnt/nfs/qta/* /usr/lib
'공대생의 일기 > Embedded' 카테고리의 다른 글
[QT]qt에 대하여 (0) | 2010.12.28 |
---|