공대생의 일기/Embedded2010. 12. 28. 02:01
2009년

설치. ( 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
Posted by 검지발가락♡