移植qt4.8.0

本文详细介绍在Ubuntu环境下,如何从零开始配置和编译Qt嵌入式版本,包括安装必要的程序、交叉编译Qt库及触摸屏库tslib,并移植到目标开发板的过程。文章还提供了设置环境变量的方法,确保Qt程序能在开发板上正常运行,以及如何配置触摸屏,使其与Qt界面配合使用。

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

添加触摸屏库的支持

1 在 Ubuntu 安装必要程序

sudo apt-get install libtool

sudo apt-get install autoconf

sudo apt-get install automake

2 解压 tslib1.4.tar.gz

cd tslib

3 然后执行命令,

./configure --host=arm-linux ac_cv_func_malloc_0_nonnull=yes

CC=arm-arago-linux-gnueabi-gcc CXX=arm-arago-linux-gnueabi-g++

-prefix=/home/cpf/qtenv/tslib

注意:交叉编译工具要正确, -prefix 为安装目录,编译安装后的tslib 在/home/cpf/qtenv/tslib 文件夹下面。

2.4 编译并安装

make && make install

 

编译出错:undefined reference to `rpl_malloc'

注释掉 config.h.in

#undef malloc

#undef realloc

 

2.5 配置

编译后会在/home/cpf/qtenv/目录下出现 tslib。进入 tslib 目录,编辑'ts.conf'文件

cd tslib/etc

gedit ts.conf

编辑该文件,去掉 'module_raw input'前面的 # 号和空格 。

如果'module_raw input' 前面留有空格的话,运行测试软件时会提示 'Segmentation fault'

 

安装 Qt 库

1 、解压 Qt 源码

tar zxvf qt-everywhere- opensource-src-4.8.2.tar.gz

2 、编译

(1)cd qt-everywhere-opensource-src-4.8.2

(2)指定交叉编译器

vi mkspecs/qws/linux-arm-g++/qmake.conf

编辑 qmak.conf,将“arm-linux ” 更改为

"arm-arago-linux-gnueabi “,并增加参数“lts ”

到四个选项,如下所示:

#

# qmake configuration for building with arm-linux-gnueabihf-g++

#

 

include(../../common/linux.conf)

include(../../common/gcc-base-unix.conf)

include(../../common/g++-unix.conf)

include(../../common/qws.conf)

 

# modifications to g++.conf

QMAKE_CC = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-gcc -lts

QMAKE_CXX = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++ -lts

QMAKE_LINK = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++ -lts

QMAKE_LINK_SHLIB = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++ -lts

 

# modifications to linux.conf

QMAKE_AR = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-ar cqs

QMAKE_OBJCOPY = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-objcopy

QMAKE_STRIP = /usr/local/arm/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-strip

load(qt_config)

 

(3)新建 build_qt.sh 脚本文件,增加以下配置内容:

# !bin/bash

./configure -prefix $HOME/qtenv/qt-4.8.2-arm \

-opensource \

-confirm-license \

-embedded arm \

-xplatform qws/linux-arm-g++ \

-platform /qws/linux-x86-g++ \

-little-endian \

-host-little-endian \

-shared \

-no-qt3support \

-no-phonon -no-phonon-backend \

-qt-zlib \

-no-gif \

-no-libtiff \

-no-qvfb \

-qt-libjpeg \

-no-nis \

-no-opengl \

-no-cups \

-no-webkit \

-no-glib \

-no-dbus \

-no-rpath \

-no-mmx -no-3dnow \

-no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2 \

-no-avx -no-neon \

-no-audio-backend \

-no-svg \

-no-javascript-jit \

-no-script \

-no-scripttools \

-no-multimedia \

-no-openssl \

-nomake tools \

-qt-mouse-tslib \

-I/home/cpf/qtenv/tslib/include \

-L/home/cpf/qtenv/tslib/lib

-L/home/cpf/qtenv/tslib/lib ,是对应相应的 tslib 的安装路径

-prefix $HOME/qtenv/qt-4.8.2-arm 是对应以后这个程序的安装路径

(4) 执行 build_qt.sh 文件,配置 qt 编译规则

sh build_qt.sh

(5)make

(6)make install

安装完成后,在安装目录下生成了 qt 库以及 demo 程序。

3、完成编译和安装后需要对系统的环境变量进行设置,才能编译自己的程序

vim setARMenv.sh

#!/bin/sh

export QTEDIR=/home/cpf/qtenv/qt-4.8.2-arm:$QTEDIR

export PATH=/home/cpf/qtenv/qt-4.8.2-arm/bin:$PATH

export LD_LIBRARY_PATH=/home/cpf/qtenv/qt-4.8.2-arm/lib: LD_LIBRARY_PATH

注意:以上目录是你安装 qt 库的路径。

 

编译 Qt 程序

1. 上位机编译程序,以 am3359 Qt 界面程序为例

在虚拟机的 ubuntu 下,写好代码之后,定位到代码目录,

先执行 source setARMenv.sh 修改环境变量

然后查看 qmake 的路径是否正确

执行命令

$ qmake -project // 生成工程文件.pro

$ qmake // 生成 makefile

$ make //生成可执行文件 am3359

2.或者使用 qtcreat 编译。

 

移植库到开发板

1 )虚拟机里编译安装 arm 版的 Qt 库在你的安装目录下,如:

/home/cpf/qtenv/qt-4.8.2-arm/lib 下,在 qt-4.8.2-arm/目录执行下面的命令打包,方

便以后移植使用

tar zcvf lib.tar.gz lib/

2 )移植到开发板

最好是跟你在虚拟机里面的 arm 版 Qt 所在目录一样,方便操作!

在开发板下新建目录: /home/cpf/qtenv/qt-4.8.2-arm/

把 lib.tar.gz 解压到此目录, lib 目录下包含库和字体。

2. 安装成功后,这步非常关键,一定要设置环境变量

在开发板的根目录下执行:

$ vi /etc/profile

然后输入

export QTDIR=/home/cpf/qtenv/qt-4.8.2-arm:$QTDIR

export LD_LIBRARY_PATH=/home/cpf/qtenv/qt-4.8.2-arm/lib:$LD_LIBRARY_PATH

export QT_QWS_FONTDIR=/home/cpf/qtenv/qt-4.8.2-arm/lib/fonts

保存退出!

 

3. 准备 tslib 文件 ,使触摸屏工作

把虚拟机/home/cpf/qtenv/tslib 目录下的文件拷贝到开发板上的

/home/cpf/qtenv/tslib,没有的话自己建个文件。

修改触摸屏配置文件

3.1 环境变量

为了实现 Tslib 的正确运行,需要对如下的 Tslib 的环境变量进行配置:

设置环境变量如下:(或者写成 shell 形式)

export T_ROOT=/home/cpf/qtenv/tslib/

export LD_LIBRARY_PATH=/home/cpf/qtenv/tslib/lib:$LD_LIBRARY_PATH

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event0

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts

export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf

export POINTERCAL_FILE=/etc/pointercal

export TSLIB_CALIBFILE=/etc/pointercal

export QWS_MOUSE_PROTO=tslib:/dev/input/event0

或者也写在/etc/profile 里面.

 

支持触摸屏

在对触摸屏校准以后,可以执行以下命令来支持触摸屏:

export QWS_MOUSE_PROTO=Tslib:/dev/input/event0

支持鼠标

export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice

同时支持触摸屏和鼠标

export set QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 Intellimouse:/dev/input/mice"

然后执行测试程序 ./qt_test -qws

就可以看到 Qt 界面。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值