qt4嵌入式开发环境搭建过程(包括各种异常问题)(2)

来源:互联网 发布:万人网络营销软件站 编辑:程序博客网 时间:2024/06/12 01:30

上一章介绍了宿主机上的qt4环境搭建

这章介绍下位机即开发板的qt4环境搭建

二,下位机qt/E4环境搭建移植

分三步:准备工作、编译安装、qt/E4移植到开发板

1、准备工作

(1)安装交叉编译工具
     交叉编译工具是将宿主机(一边是intel386)上的qt程序编译成arm版可执行的qt程序我这里是将arm-linux-4.4.3.tar.bz2 拷贝到 /home/forlinx/work/ 目录下 使用
#tar xvf  arm-linux-4.4.3.tar.bz2   -C /usr/lcoal/arm/  解压到/usr/local/arm/目录下

环境变量设置,这和上一章的gcc的环境变量设置有点类似,通过链接或添加路径到 /etc/profile 的方法,在这里就不多说了,测试:
#arm-linux-gcc -v

(2)tslib1.4安装
tslib 是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因此这里先编译安装 tslib,这样在后面编译 Qt 的时候才能打包编译进去。
首先,安装 autoconf、automake、libtool 包:
# sudo apt-get install autoconf
# sudo apt-get install automake
# sudo apt-get install libtool
     这一步有时候会遇到问题,比如package  not found 等类似提示,通过两部检查:1,检查网络连接是否成功;2,使用#apt-get install update 安装更新包来解决一些组件无法安装的问题。上一章在安装g++和qt creator 遇到类似问题也可以这样解决。
拷贝 src 目录下 tslib-1.4.tar.bz2 的到/home/forlinx/work(推荐)目录下面
# tar -xvf tslib-1.4.tar.bz2 
# cd ./tslib
#./ autogen-clean.sh
#./autogen.sh
#./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/usr/local/arm/tslib   configure配置选项通过help命令去了解
#make
#make install

(3)移植、配置、测试tslib

移植 tslib 到 ok335x 目标板
假设用户的根文件系统路径为:/home/forlinx/work/rootfs-mini
执行以下命令:
# cd /usr/local/arm/tslib
# cp -ar lib/* /home/forlinx/work/rootfs-mini/usr/lib
# cp -ar bin/* /home/forlinx/work/rootfs-mini/usr/bin
# vi etc/ts.conf 去掉 module_raw input 前注释符#,一定要注意中间的空格也去掉,module 顶格
# cp -ar etc/* /home/forlinx/work/rootfs-mini/etc

导出 tslib 环境变量
# cd /home/forlinx/work/rootfs-mini
# vi etc/profile #添加以下环境变量
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/lib/ts
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
tslib 环境变量说明:

TSLIB_CONFFILE
//配置文件名
TSLIB_PLUGINDIR
//插件目录
POINTERCAL_FILE:
//指定包含用于校准指针设备的数据的文件
TSLIB_TSDEVICE
//触摸屏设备文件名
TSLIB_CALIBFILE
//校准的数据文件,由 ts_calibrate 校准程序生成
TSLIB_CONSOLEDEVICE
//控制台设备文件名
TSLIB_FBDEVICE
//设备名
以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发
板上的/dev 目录下的设备节点相对应。

在 OK335x 目标板下测试 tslib
 用新文件系统启动 OK335x 板子,进入 shell 后执行如下命令:
# ts_calibrate              对电阻屏进行触摸较验
# ts_test                 对电阻屏进行触摸测试

2、编译安装

拷贝qt-everywhere...... 解压,进入目录
#./configure \
 -prefix /usr/local/arm/qt4.8.5\
 -opensource \
 -confirm-license \
 -release -shared \
 -embedded arm \
 -xplatform qws/linux-arm-g++ \
 -depths 16,18,24,32 \
 -fast \
 -optimized-qmake \
 -little-endian -host-little-endian \
 -pch \
 -qt-sql-sqlite \
 -qt-libjpeg \
 -qt-zlib \
 -qt-libpng \
 -qt-libmng \
 -qt-libtiff \
 -qt-freetype \
 -webkit \
 -no-openssl \
 -no-glib \
 -no-qt3support \
 -no-libtiff -no-libmng \
 -no-opengl \
 -no-mmx -no-sse -no-sse2 \
 -no-3dnow \
 -no-qvfb \
 -no-phonon \
 -no-nis \
 -no-opengl \
 -no-cups \
 -no-separate-debug-info \
 -nomake docs \
 -qt-mouse-tslib \
 -qt-mouse-linuxinput \
 -qt-kbd-linuxinput \
 -I/usr/local/arm/tslib/include \
 -L/usr/local/arm/tslib/lib

#make 
#make install 

移植qt/E 到 OK335x 目标板
# cd
/usr/local/arm/qt4.8.5/
# cp
-ar
lib/libQt* lib/fonts/
/home/forlinx/work/rootfs-mini/forlinx/qt/lib
# cp
-ar
demos/embeddeddialogs/embeddeddialogs /home/forlinx/work/rootfs-mini/forlinx/qt/bin
导出 qt 环境变量

# cd /home/forlinx/work/rootfs-mini
# vi etc/profile #添加以下环境变量
export QTDIR=/forlinx/qt
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export QWS_SIZE=800x480
export QWS_DISPLAY=LinuxFb:/dev/fb0
export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0
< Qt 环境变量说明:
LD_LIBRARY_PATH:指定 qt 的共享库具体路径
QT_QWS_FONTDIR:指定 qt 的 font 具体路径
QWS_SIZE:设定在屏幕尺寸
QWS_DISPLAY:指定的显示类型和帧缓冲区
QWS_MOUSE_PROTO:指定触摸设备
以上环境变量在实际开发中的实际配置可以根据实际情况决定。而这些指定的设备节点一定要和你的开发
板上的/dev 目录下的设备节点相对应。

测试qt4.8.5
用新移植的文件系统启动开发板,进入 shell 后执行如下命令:
# cd /forlinx/qt/bin
# ./embeddeddialogs -qws&

3、qt creator  上QT/E构建和运行的设置和上一章的qt4的设置类似

不过需要明白其对应关系:  
           宿主机:                                                下位机
   Ubuntu                                                      嵌入式Linux
编译器        qt版本                                         编译器                                                  qt版本
gcc         i386平台 qt4                            交叉编译arm-linux-gcc将程序编译好    arm平台版本(arm-qamke) qt-embedded


这一章会遇到一些bug:
如果编译出现缺少链接信息错误:
warning: libts-0.0.so.0, needed by , not found (try using -rpath or -rpath-link)
undefined reference to `ts_read_raw'
undefined reference to `ts_open'
undefined reference to `ts_fd'
undefined reference to `ts_config'
undefined reference to `ts_close'
undefined reference to `ts_read'
collect2: ld returned 1 exit status
解决方法如下:
修改 qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加 lts 参数),也可以直接添加arm-linux-g++的绝对路径(如QMAKE CC=/usr/local/arm/.../arm-linux-gcc):
QMAKE_CC = arm-linux-gcc -lts
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts

修改完成后保存退出,继续编译。



0 0
原创粉丝点击