ARM9 JZ2440开发板移植 QT4.5 + tslib1.4 及细节总结

本文详细记录了Qt在JZ2440开发板上的移植过程,包括服务器环境搭建、交叉编译器配置、tslib及Qt源码编译等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2018年9月12日22点28分

harmful-chan

 

前前后后弄了一个星期了,很是辛苦

arm-linux-readelf -a xxx | grep lib    //查应用程序依赖库


前期准备

软件:

服务器:虚拟机Ubuntu14.04    

远程登陆:putty

串口调试:putty

开发板:JZ2440(韦东山家的)

TFTP传输:tftpd32.exe

FTP传输:filezilla.exe

uboot:E:\学习资料\JZ2440\CD\资料\bin\uboot\u-boot.bin

linux内核:E:\学习资料\JZ2440\CD\资料\bin\linux\uImage_4.3

文件系统:E:\学习资料\JZ2440\CD\资料\bin\文件系统\fs_qtopia.yaffs2

QT源码包: qt-embedded-linux-opensource-src-4.5.3.tar.gz   

    //http://download.qt.io/archive/qt/4.5/qt-embedded-linux-opensource-src-4.5.3.tar.gz.mirrorlist

tslib源码包:tslib-1.4.tar.gz

交叉编译器:arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2     //开发板资料自带的

服务器准备安装包:

sudo apt-get install g++-multilib libx11-dev libxext-dev libxtst-dev zlib1g-dev lib32ncurses5 lib32z1 libpng-dev autoconf automake libtool

服务器文件目录架构:

用户目录 /home/linux/

~/Qt/bin    //最后打包好文件目录

~/Qt/src    //安装包及源码编译目录

~/Qt/output    //生成库目录

~/Qt/demo-1.0    //PC机写好的QT程序目录

/usr/local/arm-linux-gcc/    //交叉编译器目录


第一步、开发板恢复出厂

烧uboot、内核、挂在文件系统开东哥的教程吧

第二步、服务器 开发板 PC机相互ping通

看东哥教程把

第三步、PC机写好QT程序

我用QT creator 写的

http://www.360doc.com/content/18/0115/17/48260833_722161472.shtml

第四步、服务器 安装交叉编译器

cd ~/Qt/src/

解压 tar xvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2

mkdir /usr/local/arm-linux-gcc/

sudo mv arm-linux-gcc-3.4.5-glibc-2.3.6 /usr/local/arm-linux-gcc/    //转移位置

sudo vi /etc/profile    //打开环境变量配置文件,文件最后添加一下代码,保存退出

export PATH=/usr/local/arm-linux-gcc/gcc-3.4.5-glibc-2.3.6/bin/:$PATH

source /etc/profile    //更新环境变量,这个是所有用户共用的

echo $PATH    //看一下有没有添加到上面的路径

arm-linux-gcc -v    //会弹出一大堆英文才安装成功

第五部、服务器 编译tslib

cd ~/Qt/src/

tar xvf tslib-1.4.tar.gz

cd tslib/

//首先设置好所需编译器的环境变量,不设置好编译时会找不到

export CC=/usr/local/arm-linux-gcc/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc

export CXX=/usr/local/arm-linux-gcc/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-g++

sudo   ./autogen.sh

echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache    //不设置的话好像会编译时弹出个溢出错误

./configure --host=arm-linux \    //交叉编译器的前缀 如:arm-none-linux-gnueabi-gcc 则arm-none-linux-gnueabi

--prefix=/home/linux/Qt/output/tslib \    //生成文件路径,会自己创建文件夹

--cache-file=arm-linux.cache    //注意:不能加sudo 应为CC,CXX等环境变量只在当前用户生效

第六步、服务器 编译QT源码包

cd ~/Qt/src/

tar xvf qt-embedded-linux-opensource-src-4.5.3.tar.gz

cd qt-embedded-linux-opensource-src-4.5.3

./configure -embedded arm \    //生成文件架构

-xplatform qws/linux-arm-g++ \     //配置qmake使用平台。使用./mkspecs/qws/linux-arm-g++/qmake.conf文件

//-platform qws/linux-arm-g++  \    //编译源码的平台,在服务器/PC编译不用添加,默认使用./mkspecs/qws/linux-x86-g++/qmake.conf文件

-no-qt3support -no-qvfb \    //其他配置可以./configure --help查看

-qt-mouse-tslib \    //支持触摸屏

-qt-sql-sqlite \    //支持数据库

-prefix /home/linux/Qt/output/qt-arm/ \    //生成库文件位置,会自动创建

-I/home/linux/Qt/output/tslib/include  \    //触摸屏头文件

-L/home/linux/Qt/output/tslib/lib \    //库文件

-no-rpath -no-largefile \

注意:有时会弹出“-m64” 或 “m64”不支持错误,在前面加个sudo,会优先调用系统的g++

make    //留意一下编译信息,如果一直只调用g++ ... 很可能使环境变量设置不对,找不到arm-linux-g++,

sudo make install   //安装到先前指定的目录

~/Qt/output/qt-arm/bin/qmake -v    //查看是否安装成功,这个qmake专门生成arm上面的QT程序的,喜欢可以改下名字 

第七步、编译QT程序

用ftp把PC机写好QT程序的.cpp,.h,和.pro文件。拉到服务器的~/Qt/demo-1.0/里面去

参考另一篇文章https://blog.youkuaiyun.com/harmful_chan/article/details/82559029

cd ~/Qt/demo-1.0/

qmake

make    //与无意外是没啥问题的

第八步、文件打包移植JZ2440

cd ~/Qt/bin/

cp -r ~/Qt/output/tslib/  ./   

cp -r ~/Qt/output/qt-arm/lib/  ./    

cp -r ~/Qt/output/qt-arm/mkspecs/  ./

cp -r ~/Qt/output/qt-arm/plugins/  ./

cp -r ~/Qt/demo-1.0/  ./

tar cvf QT-1.0.bin */    //打包好了,貌似jz2440不支持.tar什么的

用FTP把QT-1.0.bin拉到PC机tftpd32d.exe的文件目录下

设置好tftpd32.exe https://blog.youkuaiyun.com/harmful_chan/article/details/82623963

以下为JZ2440开发板串口调试操作

cd opt/

mkdir QT-1.0

cd QT-1.0

ping 192.168.137.1    //ping PC机虽然IP有点奇葩,但着只是个普通IP,

ifconfig eth0 192.168.137.11    //修改开发板IP,同一网段应该能通

tftp -g -r QT-1.0.bin 192.168.137.1    //下载文件,可能有点慢

tar xvf QT-1.0.bin    //解压好了

第九步、设置环境变量

命令行输入一下信息,喜欢可以弄个脚本

export TSLIB_ROOT=/opt/QT-1.0/tslib
export TSLIB_TSDEVICE=/dev/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/opt/QT-1.0/tslib/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/opt/QT-1.0/tslib/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_SIZE=480x272
export QWS_MOUSE_PROTO=Tslib:/dev/event0
export QTDIR=/opt/QT-1.0
export QPEDIR=/opt/QT-1.0
export PATH=$QTDIR/bin:$PATH
export QWS_DISPLAY=LinuxFb:/dev/fb0
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QWS_FONTDIR=$QTDIR/lib/fonts

echo $LD_LIBRARY_PATH    //看设置了没

注意:要修改为自己的路径,不能瞎复制

第十步、运行测试

./XXX -qws    //屏幕有反应就没问题啦

先进入tslib的bin目录,执行./ts_calibrate校准触屏,然后执行一个Qt程序,./textedit -qws就可以看到打开了一个文本编辑器,./mainwindow -qws就可以打开一个窗口界面,

这些程序在demos目录下需要拷贝到开发板上执行,执行成功则说明移植成功,接下来,编写一个脚本文件,将上述环境变量的设置写入脚本文件,开机执行,并且在/etc/init.d/rcS中写入开机启动Qt程序的命令,则开机即可看到优美的GUI界面了,OK。至此,移植完成。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值