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 กันเองนะครับ