新唐N32926移植QT4

忙活了一周,终于在新唐这个ARM9上跑起了了QT,总结一下吧。

作为一个新手,移植过程感觉还是比较坑的。PS:第一次写博客偷笑

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



解决方法:
重新配置内核:# make menuconfig
选中:Networking——>Networlding options——>Unix domain sockets
保存
重新烧写板子,运行。

至此结束QT 移植。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值