打印
[牛人杂谈]

新唐N32926移植QT4

[复制链接]
1089|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


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



沙发
天灵灵地灵灵|  楼主 | 2018-12-27 09:40 | 只看该作者

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

至此结束QT 移植。


使用特权

评论回复
板凳
heisexingqisi| | 2018-12-27 10:14 | 只看该作者
这要学会Linux系统才行。

使用特权

评论回复
地板
幸福小强| | 2018-12-27 23:17 | 只看该作者
多谢分享。

使用特权

评论回复
5
598330983| | 2018-12-28 14:31 | 只看该作者
这东西Windows下可以搞吗

使用特权

评论回复
6
renzheshengui| | 2019-1-8 11:52 | 只看该作者
请问 QT是什么啊

使用特权

评论回复
7
wakayi| | 2019-1-8 11:56 | 只看该作者

Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器

使用特权

评论回复
8
huangcunxiake| | 2019-1-8 17:21 | 只看该作者
移植这个,先搞系统。

使用特权

评论回复
9
xuanhuanzi| | 2019-1-8 18:00 | 只看该作者
QT做界面程序的吧

使用特权

评论回复
10
renzheshengui| | 2019-2-1 16:19 | 只看该作者
wakayi 发表于 2019-1-8 11:56
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可 ...

非常感谢热心解答

使用特权

评论回复
11
wakayi| | 2019-2-1 16:27 | 只看该作者

客气了 举手之劳

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

173

主题

3358

帖子

13

粉丝