QT 관한 글을 올리면서 몇년 전에 올렸던 QT 설치 방법 및 QT 프로그래밍에 대한 글을 올립니다. 글을 작성하니 시간이 지났기 때문에 글에서 소개하는 QT버전이 낮습니다만 기본 설치 방법이나 사용 방법은 같으리라 생각되며, 혹 필요하신 분이 계실 듯 해서 올립니다. 또한 이미 QT 최근 버전 설치방법에 대한 글을 올렸습니다. 아래의 링크를 참고하여 주십시오.

QT 설치

안녕하세요. QT 를 시작한지 얼마 안되는데, 이렇게 강좌에 글을 올려도 되는지 모르겠습니다....^^;;
처음 QT 를 대할 때, 설치부터 막혀서 고생했었습니다. 여기 저기 웹검색을 통해 결국 설치했습니다만, 몇 일 동안 고생했기 때문에, 혹 다른 분들께 도움이 되드리지 않을까해서 용기내어 올립니다.
아래의 글은 저 혼자 스스로 터득한 내용이 아니라 웹 검색을 통해 여기 저기에서 얻은 정보를 가지고 설치한 경험기임을 말씀드립니다.

QT 를 설치하시려면, 파일을 구해야 하는데요, QT 는 버전별로 궁합이 맞는 버전들이 있습니다. 너무 최신 버전만을 고집하지 마시고, 웹 검색을 통해 가장 안정하고 권장하는 버전을 설치하시기 바랍니다.

여기에서는,

QT/X11 2.3.2
QT/Embedded 2.3.7
QTopia 1.70

을 가지고 진행하겠습니다. 그럼 파일 구하기 부터 말씀을 드리겠습니다.

  1. 파일 구하기
  2. 설치 전 주의 사항
  3. 설치 준비
  4. QT-X11 설치
  5. QT-Embedded 설치
  6. QTopia 설치
 ■ 파일 구하기

/qt/source/qt-x11-2.3.2.tar.gz
/qt/source/qt-embedded-2.3.7.tar.gz
/freebies/tmake/tmake-1.13.tar.gz
/qtopia/source/qtopia-free-1.7.0.tar.gz
http://e2fsprogs.sourceforge.net에서 화면 중앙 쯤에서 "which can be found here." 의 here 를 클릭
e2fsprogs-1.38.tar.gz

http://ftp.scarlet.be/pub/freeware/SOURCES/jwpg-6b.tar.gz에서

jpeg-6b.tar.gz

 설치 전 주의 사항
  1. qt 는 make install 과정이 없다. 압축을 풀고, make 하는 곳이 곧 설치 장소가 되므로, 적당한 곳에 풀어 놓는다.

    여기서는 아래의 폴더에 맞추어 설치된다.
    QT root /qt
    QT/X11 /qt/qtx
    QT/Embedded /qt/qte
    QTopia /qt/qpe

  2. qt 를 설치하기 위해서는 freetype 라이브러리 버전 2 이상이 필요하다.

    우선 /usr/include 에 freetype 폴더가 있는지 확인한다.
    if 없다면
          freetype2 폴더, 즉 freetype 버전 2가 있는지 확인한다. freetype 버전 1은 안된다.
          if 없다면
               freetype 라이브러를 구해 설치한다.
          else
               ln -s /usr/include/freetype2/freetype /usr/include/freetype
                          -> /usr/include/freetype  가 설치된 환경으로 만들어 준다.

  3. 설치할 qt 버전은

    QT/X11 2.3.2
    QT/Embedded 2.3.7
    QTopia 1.70

    이다, 그러나 QTopia 2.x.x. 버전대를 설치한다면 QT/Embedded 를 2.3.10 이상 버전을 사용해야 한다.
    기껏 QT/X11, QT/Embedded 를 설치했다가 QTopia 에서 버전 에러가 나면 정말 황당하다.

  4. qtopia 를 설치할 때, qtopia 의 lib 폴더를 미리 LD_LIBRARY_PATH 에 등록해서는 절대 안된다.

    qtopia 가 설치될 때, 아직 설치 전인 상태에서 qtopia lib 폴더 안에있는 라이브러리를 참조하게되고,
    make 시에 엉뚱하게,

    .obj/linux-armg++//moc_appeearancesettingsbase.o -lqpe -lqtopia -lqte -lm /opt/arm-linux/bin/ld:
    cannot find -lqtopia
    clooect2: ld returned 1 exit status

    라며 에러를 낸다.

  5. 작성한 임베디드 프로그램을 P.C. 에서 테스트, 즉 이뮬레이션을 이용하기 위해서는 QT/Embedded 와 qtopia 를 크로스 플랫폼으로 설치하면 안된다.
    즉, ./configure 에서 옵션으로 x-platform linux-arm-g++ 을 사용하면 p.c. 에서 실행해 볼 수 없다.

  6. 임베디드 프로그램을 P.C. 에서 테스트하려면, 즉 프레임버퍼를 이용한 이뮬레이션을 하려면,
    1. QT/X11 이 설치되어 있는 폴더안에 /tools/qvfb 안으로 이동하여
    2. make 로 qvfb 를 생성하고,
    3. QT/X11 폴더의 bin 폴더에 옮겨 놓는다.
    4. 작성한 임베디으 프로그램을 실행하기 전에 qvfb 를 실행하고,

      # qvfb -width 640 -height 480 -depth 16

    5. 실행할 프로그램에 -qws 옵션을 함께 주어 실행한다.

      ./hello -qws
 ■ 설치 준비

압축 풀기
# mkdir /qt
# cd /qt
# tar zxvf /root/download/qt-x11-2.3.2.tar.gz
# tar zxvf /root/download/qt-embedded-2.3.7.tar.gz
# tar zxvf /root/download/qtopia-free-1.7.0.tar.gz
# tar zxvf /root/download/tmake-1.13.tar.gz
# tar zxvf /root/download/e2fsprogs-1.38.tar.gz
# tar zxvf /root/download/jpeg-6b.tar.gz

위의 글을 보시면 /qt 라는 폴더에 모든 파일을 다운 받아 놓고 한번에 풀어 놓고 있습니다.
아래의 설치 설명을 보시면 바로 아시겠습니다만, 작업 단위로 나누어서 설명을 드리는 것이 글이 복잡하지 않을 것 같아서 정리하듯 적었습니다.

그러나 주의 하실 것은 qt-embedded 와 qt-x11 을 같은 버전으로 설치하신다면, 압축을 푸시고, 바로 폴더 이름을 변경해 주셔야 합니다.

이유는 qt-embedded 와 qt-x11 모두 버전이 포함된 폴더 이름을 압축이 풀리는데, 둘 모두 같은 버전이라면 같은 폴더에 풀리기 때문입니다.

이점 유의하세요.

폴더 이름 변경
# mv qt-2.3.2 qtx
# mv qt-2.3.7 qte
# mv qtopia-free-1.7.0 qpe
# mv tmake-1.13 tmake
# mv e2fsprogs-1.38 uuid_lib
# mv jpeg-6b jpeg
환경파일 생성
# vi qtx.env
#!/bin/bash
QTDIR=/qt/qtx
PATH=$QTDIR/bin:$PATH
TMAKEDIR=/qt/tmake
TMAKEPATH=$TMAKEDIR/lib/linux-g++
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH TMAKEDIR TMAKEPATH LD_LIBRARY_PATH
# vi qte.env
#!/bin/bash
QTDIR=/qt/qte
QPEDIR=/qt/qpe
TMAKEDIR=/qt/tmake
TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
MANPATH=$QTDIR/doc/man:$MANPATH
PATH=$QTDIR/bin:$TMAKEDIR/bin:$PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR QPEDIR TMAKEDIR TMAKEPATH PATH LD_LIBRARY_PATH
 ■ QT-X11 설치

  1. # source qtx.env
    # echo $QTDIR   -> /qt/qtx 라고 나오는지 확인한다.
  2. # cd $QTDIR
  3. # vi Makefile
    설치시간을 벌기 위해, Makefile 의 11 행에 있는 symlinks 에서 sub-tutorial 과 sub-examples 를 삭제한다.


  4. # ./configure
    라이센스에 대해 yes 입력
  5. # make
  6. 몇 십분 후에 컴파일과 설치가 정상적으로 끝나면

    Enjoy! - the Trolltech team

    문구가 보인다.

    ...............................임베디드 프로그램을 위해 QVFB  를 설치한다. ..........................
  7. # cd /qt/qtx/tools/qvfb
    # make
    # cp qvfb /qt/qtx/bin
 ■ QT-Embedded 설치

  1. qt embedded 환경을 설정한다.

    # source qte.env

  2.  설치 디렉토리로 이동
    # cd $QTDIR

  3. 필요한 파일을 복사한다.

    # cp /qt/qtx/bin/uic .bin/
    # cp /qt/qpe/src/qt/qconfig-qpe.h /qt/qte/src/tools/

  4. # ./configure -xplatform linux-arm-g++ -qconfig -qpe

    라이센스 질문에 yes, 칼라 뎁스에 16, Framebuffer 사용에 yes(엔터) 를 선택한다.
    아래의 화면 내용을 확인한다.
    • Building on : linux-x86-g++-shared
    • Building for : linux-arm-g++-shared
    • Thread support................................ no
    • Configuration................................... qconfig-qpe.h

  5. # make sub-src          -> 예제를 제외한 소스코드만 컴파일하도록 한다.
  6. sub-src 를 사용했기 때문에 마지막에 Enjoy! - the Trolltech team 문구가 없이 나감 '/qt/qte/src' 디렉토리 라고만 나온다. 제대로 설치되었는지 확인하기 위해 생성된 library 를 확인한다.

    # cd lib
    # ls -l
       libqte.so -> libqte.so.2.3.7
       libqte.so.2 -> libqte.so.2.3.7
       libqte.so.2.3 -> libqte.so.2.3.7
       libqte.so.2.3.7
      
    # file libqte.so.2.3.7 
       ELF 32-bit LSB ...... ARM .....   --> arm 용으로 만들어 졌으면 일단 O.K.

 ■ Qtopia 설치


.............. Qtopia 를 설치하기 전에 미리 uuid 와 jpeg 라이브러리를 미리 설치해야 한다. ..............

 

  1. ---------------------------------------------------------------
    uuid 를 설치한다.
    ---------------------------------------------------------------
    # cd /qt/uuid_lib
  2. # ./configure
  3. # cd lib/uuid
  4. # vi Makefile

    prefix = /usr             -> prefix = /qt/qpe
    CC = cc                   -> CC= arm-linux-gcc
    BUILD_CC = cc         -> BUILD_CC = arm-linux-gcc
    AR = ar                     -> AR = arm-linux-ar
    RANLIB = ranlib         -> RANLIB = arm-linux-ranlib

    362 행부터 372 행을 삭제(주석처리) 한다.
         for i in $(SMANPAGES); DO ...
              .............
         $(LN) -f $(DESTDIR)....../uuid_generate_time.3
  5. # make
  6. # make install

  7. ---------------------------------------------------------------
    jpeg 라이브러리를 설치한다.
    ---------------------------------------------------------------
    # cd /qt/jpeg
  8. # ./configure
  9. # vi Makefile 

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

  10. # make
  11. # make install-lib

  12. ---------------------------------------------------------------
    qtopia 를 설치한다.
    ---------------------------------------------------------------
    # cd /qt/qpe
  13. # cd src
  14. # ./configure -xplatform linux-arm-g++
  15. # make

    별다른 메시지가 없고, 나감 '/qt/........../keypebble' 디렉토리 라고 출력된다.

 

태그: *QT *그래픽