1.tslib的移植 其实新唐的已经在根文件系统移植好了,只需要在QT下使用这几个动态链接库即可
校准的程序在/usr目录下,最后生成的校准文件在/mnt/nand1-1目录
2.嵌入式QT的安装。
这里有坑,新唐提供的交叉工具是4.2版本的,编译QT5.和QT4.8.x会出问题,作为一个刚接触Linux不久的人来说,面对各种error也是种挑战。
所以我找了一个最老也是最"新"的版本,QT4.5.3,这一个版本最新是因为他是最后一个没有被整合的版本,是嵌入式QT的最后一版
http://download.qt.io/archive/qt/ 连接是QT的下载连接,下载qt-embedded-linux-opensource-src-4.5.3.tar.gz就好了。
3.QT的安装配置
解压tar xvzf 不用说了-.- 然后cd 到目录里,你可以看到是没有Makefile的,所以得先配置
配置我从百度上搜了好多 最后只找到一个能用的-.-
./configure -prefix /home/qt/qt-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-g++ -depths 4,8,16,18,24,32 -fast -optimized-qmake -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng -qt-freetype -little-endian -host-little-endian -no-qt3support -no-libtiff -no-libmng -no-opengl -no-mmx -no-sse -no-sse2 -no-3dnow -no-openssl -no-webkit -no-qvfb -no-phonon -no-nis -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools -nomake docs -qt-mouse-tslib -I/home/qt/tslib/install/include -L/home/qt/tslib/install/lib -D__ARM_ARCH_5TEJ__
配置完之后打开mkspecs下的qws,找到linux-arm-g++文件夹,修改qmake.config
最后修改如下 编译器为绝对路径。否则会提示
#
# qmake configuration for building with arm-linux-g++
#
include(../../common/g++.conf)
include(../../common/linux.conf)
include(../../common/qws.conf)
QMAKE_LIBDIR=/home/qt/tslib/install/lib
QMAKE_INCDIR=/home/qt/tslib/install/include
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv5te
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te
# modifications to g++.conf
QMAKE_CC = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
QMAKE_AR = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-objcopy
QMAKE_STRIP = /usr/local/arm_linux_4.2/bin/arm-linux-gnueabihf-strip
load(qt_config)
完事之后就可以执行 make了,make没有error之后再执行 make install
这样QT就安装到电脑里了。
4.在ARM板子上的配置
新唐的根文件系统生成的/etc/profile,会在Linux启动完加载nand驱动到内核,然后再运行/mnt/nand1-1目录下的开机脚本boot_script
所以配置QT的环境变量不要再傻傻的配置profile 然后编译内核了。
在nvtloader中按照你怎么弄的进入下载模式,在NAND1-1这个磁盘下修改boot_script,没有的话建立一个。编写QT环境变量配置啥的。
export PATH=$PATH:/mnt/nand1-2/bin
export LD_LIBRARY_PATH=./
export QWS_MOUSE_PROTO="Tslib:/dev/input/event0"
export TSLIB_CONFFILE=/usr/gui/tslib/ts.conf
export TSLIB_PLUGINDIR=/usr/gui/tslib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_CALIBFILE=/mnt/nand1-1/pointercal
export TSLIB_ROOT=/usr/gui/tslib/
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/gui/tslib/
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/gui/tslib/ts.conf
export QWS_SIZE=480x272
export QTDIR=/mnt/nand1-2/Qte
export QPEDIR=/mnt/nand1-2/Qte
export PATH=$QTDIR/lib:$PATH
export QWS_DISPLAY=LinuxFb:/dev/fb0
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
百度上能搜到的QT在ARM上的环境变量修改就这些。
好吧-.-修改这些,把QT的lib啥的复制到NAND1-2下。
复位下,随便运行一个DEMO,结果不能运行!
参考 这个博客 http://blog.csdn.net/kkvvll2/article/details/23468533
所有程序运行都需加载ld-linux.so3库,否则会出现错误No such file,这个库为动态链接库,在乌班图64位下的ld-xx.so是不可以的。需要加载32位的系统下的ld连接库,经过好多测试,最后发现这个ld是在usr/local/arm_liux_4.2目录下的arm-linux-gnueabi/lib目录下,新唐提供的编译工具下没有这个ld-2.15.so连接,但是有ld-uClibc-0.9.29.so,于是通过ln -s /ld-uClibc-0.9.29.so /lib/ld-linux.so.3建立软连接,把arm-linux-gnueabi/lib这个目录下的东西copy到NAND
修改环境变量。
好了。再次运行QT的程序结果还是不行。。。。。。。。。。。
出错一
# ./helloworld -qws
QWSServerSocket::init: Function not implemented
QWSServerSocket: unable to create socket.
QWSServerPrivate::initServer: server socket not listening: Illegal seek
Failed to bind to /tmp/qtembedded-0/QtEmbedded-0
|