相关阅读:Linux 下 Qt 4.6.0 嵌入式开发环境的搭建、移植
下载点击这里。
一、安装交叉编译工具链
1、在 /etc/apt/sources.list 中添加源:deb http://www.emdebian.org/debian/ stable main
(教育网IPV6用户推荐:deb http://debian6.ustc.edu.cn/emdebian/toolchains/ stable main)
2、安装相应包:
# apt-get update
# apt-get install cpp-4.3-arm-linux-gnueabi g++-4.3-arm-linux-gnueabi gcc-4.3-arm-linux-gnueabi gobjc++-4.3-arm-linux-gnueabi gobjc-4.3-arm-linux-gnueabi
二、编译安装 PC 版的 Qt
$ ./configure -opensource -confirm-license
$ make -j4
# make install
设置环境变量,在~/.bashrc 中加入:
export PATH=/usr/local/Trolltech/Qt-4.7.1/bin:${PATH}
export LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.7.1/lib:${LD_LIBRARY_PATH}
$ source ~/.bashrc
三、编译 qvfb
切换到目录:qt-everywhere-opensource-src-4.7.1/tools/qvfb
$ export CPLUS_INCLUDE_PATH=../../include/QtCore
$ qmake
$ make -j4
# cp ../../bin/qvfb /usr/local/Trolltech/Qt-4.7.1/bin/
四、编译安装 arm 版的 Qt
1、 $ ./configure -opensource -confirm-license -embedded arm -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
中途出错,修改 qt-everywhere-opensource-src-4.7.1/mkspecs/default/qmake.conf 后继续configure,修改如下:
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabi-gcc
QMAKE_CXX = arm-linux-gnueabi-g++
QMAKE_LINK = arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabi-objcopy
QMAKE_STRIP = arm-linux-gnueabi-strip
2、$ make -j4
3、# make install
相关阅读:The Virtual Framebuffer,The VNC Protocol and Qt for Embedded Linux
五、安装qemu,在 PC 中运行 arm 程序
(由于源中的 qemu 和工具链不匹配,安装新的 qemu-0.13.0 。)
$ ./configure
$ make -j4
# make install
六、测试
1、测试著名的 helloworld(假设~/arm/ 中有 helloworld.c)
$ arm-linux-gnueabi-gcc -o helloworld helloworld.c
(查看文件信息 $ file helloworld,可见:ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped)
$ qemu-arm -L /usr/arm-linux-gnueabi/ ~/arm/helloworld
如果一切正常,可看到经典输出。
2、测试 Qt 程序
$ qvfb -width 800 -height 600 &
$ qemu-arm -L /usr/arm-linux-gnueabi/ /usr/local/Trolltech/QtEmbedded-4.7.1-arm/demos/affine/affine -qws
如果一切正常,可看到如本文开篇所示的结果。