Categories
Embedded Linux

Compile Qt 4.7 for mini2440

Toolchains

เริ่มต้น เราต้องลง Cross Tool Chain ก่อน สำหรับการลง Cross Tool Chain นั้น ที่มีให้จะเป็นสำหรับ linux 32 bit เท่านั้น

-> arm920t-eabi.tgz อันนี้จะทำงานบน linux 32 bit เท่านั้น ถ้าไปใช้บน 64 bit จะเกิดปัญหาคือไม่สามารถเรียกโปรแกรมได้

เริ่มต้นเปิด terminal ขึ้นมา

$ wget http://www.iamgolfz.com/files/arm920t-eabi.tgz
$ sudo tar xzvf arm920t-eabi.tgz -C /
$ echo "export PATH=$PATH:/opt/toolchains/arm920t-eabi/bin" >> ~/.bashrc
$ source ~/.bashrc

จากนั้นลองพิมพ์ ตัวนี้ดูถ้าไม่ขึ้นอย่างนี้แสดงว่า ทำผิดนะครับ
$ arm-angstrom-linux-gnueabi-gcc
arm-angstrom-linux-gnueabi-gcc: no input files

สีชมพูคือสิ่งที่ควรจะได้ไม่ใช่คำสั่ง ถึงตรงนี้เราก็ติดตั้ง Toolchains เสร็จแล้วนะครับ

Compile TSlib (Touch Screen Library)

ตัวนี้จะเป็น library ของ Qt ส่วนหนึ่งสามารถ copy อันที่สมบูรณ์มาใช้ได้เลย แต่ตอนที่ compile Qt นั้นต้องแก้ path ตามที่เราไป copy มาด้วย
$ sudo apt-get install git
$ git clone https://github.com/kergoth/tslib.git ~/tslib
$ cd ~/tslib
$ ls

acinclude.m4  autogen-clean.sh  ChangeLog     COPYING  INSTALL  Makefile.am  plugins         src    TODO
AUTHORS       autogen.sh            configure.ac     etc               m4              NEWS             README   tests  tslib.pc.in

ตอนนี้เราจะอยู่ใน folder ของ tslib แล้ว ควรจะเห็น file ประมาณนี้นะครับ (สีน้ำเงินคือชื่อไฟล์ไม่ใช่คำสั่งนะครับ) จากนั้นเราต้อง install และ set ตัวแปรบางอย่างเพื่อให้ tslib compile ได้
$ sudo apt-get install g++ automake autoconf libtool build-essential
$ export ac_cv_func_malloc_0_nonnull=yes

จากนั้นจะเป็นขั้นตอนของการ compile พิมพ์คำสั่งดังนี้
$ ./autogen.sh
$ CC=arm-angstrom-linux-gnueabi-gcc CXX=arm-angstorm-linux-gnueabi-g++ ./configure --build=i386-linux --host=arm-linux --target=arm --disable-inputapi --prefix=$PWD/build

รอสักพัก จากนั้น

$ make
$ make install

ถ้าไม่มี Error แค่นี้ก็จะเสร็จสำหรับการ Compile Tslib

Compile Qt 4.7

จากที่เราได้ compile tslib ไปแล้ว ต่อมาจะถึง Qt บ้าง เริ่มต้น install ตามนี้
$ sudo apt-get install g++ zlib1g-dev
จากนั้นเราจะสร้าง Directory qt4.7 และโหลด Qt มา
$ mkdir ~/qt4.7
$ cd ~/qt4.7
$ wget http://download.qt-project.org/archive/qt/4.7/qt-everywhere-opensource-src-4.7.0.tar.gz

รอดาวน์โหลดสักพัก จากนั้นก็แตกไฟล์
$ tar xvzf qt-everywhere-opensource-src-4.7.0.tar.gz
$ cd qt-everywhere-opensource-src-4.7.0

รอสักพักจากนั้นเราจะทำการแก้ไฟล์ config

$ mkspecs/qws/linux-arm-g++/qmake.conf
#
# qmake configuration for building with arm-linux-g++
#

include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC = arm-angstrom-linux-gnueabi-gcc
QMAKE_CXX = arm-angstrom-linux-gnueabi-g++
QMAKE_LINK = arm-angstrom-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-angstrom-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR = arm-angstrom-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-angstrom-linux-gnueabi-objcopy
QMAKE_STRIP = arm-angstrom-linux-gnueabi-strip

QMAKE_INCDIR = /home/nuok/tslib/build/include
QMAKE_LIBDIR = /home/nuok/tslib/build/lib

# LIBS += -lts

load(qt_config)

ให้เปลี่ยน /home/nuok เป็นตาม home directory ของตนเองด้วย จากนั้นเราจะทำการ configure Qt ด้วยคำสั่ง
$ ./configure -embedded arm -xplatform qws/linux-arm-g++ -prefix /usr/local/Trolltech/QtEmbedded-4.7.0-arm -qt-mouse-tslib -little-endian -qt-gfx-transformed -qt-gfx-linuxfb -qt-gfx-vnc -qt-gif -qt-libpng -qt-libjpeg -nomake examples -nomake demos

ตอน config จะมีให้เลือก o สำหรับ opensource และ yes สำหรับ license

ดูเพิ่มเติม configure Options (Qt Embedded)

ถ้าต้องการ config ใหม่ ใช้คำสั่ง

$ make confclean

ถ้าหากไม่มีปัญหาอะไร ให้เราทำการ make
$ make
ขั้นตอนนี้จะใช้เวลานานประมาณ 1 ชมหรือมากกว่านั้น จากนั้น ก็ทำการ install
$ sudo make install
ถ้าทำสำเร็จไม่มีปัญหาใดๆ แค่นี้ก็จะได้ Qt4.7 ที่พร้อมจะลงในบอร์ด mini2440 แล้วครับ
แต่สำหรับ Qt ไฟล์ ค่อนข้างใหญ่ ~ 500 MB เลยไม่ได้ลงไว้นะครับ คงต้อง build กันเองนะครับ