重要提示:
我磨叽了好几天才搞定,按照网上的方法老是实验不成功(比如QT程序是hello在开发板上运行总会出现/bin/bash:hello not found),这个就是库没有找到的表现
1.先安装交叉编译链
2.下载那个qt-embedded-linux-opensource-src(版本很多需要的是这个)
3.编译安装(在PC上,注意那个.config 的选项prefix这里的目录在开发板也必须存在一个路径一样的目录否则就会找不到库,靠悲剧)
4.复制库到你的prefix配置的那个目录(还有在开发板上面的那个配置...
5.运行测试程序时要加上-qws
请先按照
使用BusyBox构建根文件系统 完成根文件系统的构建!移植触摸屏库tslib 完成tslib的移植与安装!
请使用OpenMoko提供的交叉编译器,如果使用友善之臂公司或CodeSourcery提供的交叉编译器来编译Qt/E 4.5.2,可能会导致Qt程序运行时出现段错误!
http://qtextended.org/modules/mydownloads/visit.php?lid=38
安装新的交叉编译器:
# tar zxvf arm920t-eabi.tgz -C /
会安装至 /opt/toolchains/arm920t-eabi/ 目录。
把 "/opt/toolchains/arm920t-eabi/arm-angstrom-linux-gnueabi/lib" 目录下的 libz.so libz.so.1 libz.so.1.2.3 三个动态链接库文件拷贝至开发板 /lib 目录,因为 Qt 要用到!
换个新的终端执行:
# export PATH=/opt/toolchains/arm920t-eabi/bin/:$PATH
因为要使用新的交叉编译器!
下载Qt/E 4.5.2源码包:
http://get.qt.nokia.com/qt/source/qt-embedded-linux-opensource-src-4.5.2.tar.gz
解压Qt/E源码包并进入目录:
# tar zxvf qt-embedded-linux-opensource-src-4.5.2.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.2
配置:
# ./configure-prefix /mini2440 -release -shared -fast-pch -no-qt3support -qt-sql-sqlite -no-libtiff -no-libmng -qt-libjpeg -qt-zlib-qt-libpng -qt-freetype -no-openssl -nomake examples -nomake demos -nomaketools -optimized-qmake -no-phonon -no-nis -no-opengl -no-cups -no-xcursor-no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm -no-xinerama -no-xshape-no-separate-debug-info -xplatform qws/linux-arm-g++ -embedded arm -depths 16-no-qvfb -qt-gfx-linuxfb -no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb -qt-kbd-usb-confirm-license -qt-mouse-tslib -I/home/duancp/mytslib/include-L/home/duancp/mytslib/lib
上面的红色部分必须让找前面的tslib的目录设置,否则会出现“The tslib functionality test failed!”错误
编译:# make
出错,缺少zlib库,如果是ubuntu的话,可以通过以下的命令来安装zlib-dev:
# apt-get install zlib1g-dev
再编译:
# make
安装:
# make install
下载 /opt/arm-qt4 目录到开发板 /opt/ 目录,可去掉一些例子与字体。
需要设置一些环境变量,以下是我的开发板的 /etc/profile 文件:
# Ash profile
# vim: syntax=sh
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]\# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1
export TSLIB_ROOT=/opt/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TS_INFO_FILE=/sys/class/input/input0/uevent
export QTDIR=/opt/arm-qt4
export QPEDIR=/opt/arm-qt4
export QWS_KEYBOARD=TTY:/dev/tty1
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=lib:/usr/lib:$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
在开发板上运行Qt自带的测试例子:
# /opt/arm-qt4/demos/embedded/fluidlauncher/fluidlauncher -qws