首先说一下qt的基本知识
Qt Creator 与Qt 的联系
Qt库是一些封装好的代码,可以直接用,在写Qt程序的时候,要include需要的库。
而 Qt Creator 就是一个开发环境(IDE),集成了一些开发工具,方便开发。
好了,开始在PC机上安装qt,当然首先得下载qt版本的源码文件。这里为了后面能够移植到arm开发板上,最好选择同一个版本的QT 4.8.5,其版本号很多,有for windows的,有for linux的,有for embedded Linux的,这里我们就选Qt 4.8.5 for linux 和Qt 4.8.5 for embedded Linux 。
QT的编译与安装
1、拷贝文件到自己想要的文件夹,解压:
tar zxvf qt-everywhere-opensource-src-4.8.4.tar.gz
2、进入解压后文件目录,执行配置
cd qt-everywhere-opensource-src-4.8.4/
./configure
此处也可以加上配置前缀
./configure-prefix/opt/qt-4.8.4-x11
这样的话再后面编译过程中的文件会复制到/opt/qt-4.8.4-x11 这个目录下(目录不存在会自动创建),好处是源码便于管理,
关于这部分前缀配置可以我在config文件中找到这部分代码,可以参考,可以从这段代码中看出相应的配置以及没有配置的情况下默认安装目录,代码位于3594行,如下:
#------------------------------------------------------------------------------- # post process QT_INSTALL_* variables #------------------------------------------------------------------------------- #prefix if [ -z "$QT_INSTALL_PREFIX" ]; then if [ "$CFG_DEV" = "yes" ]; then QT_INSTALL_PREFIX="$outpath" # In Development, we use sandboxed builds by default elif [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then if [ "$PLATFORM_QPA" = "yes" ]; then QT_INSTALL_PREFIX="/usr/local/Trolltech/QtLighthouse-${QT_VERSION}" else QT_INSTALL_PREFIX="/usr/local/Trolltech/QtEmbedded-${QT_VERSION}" fi if [ "$PLATFORM" != "$XPLATFORM" ]; then QT_INSTALL_PREFIX="${QT_INSTALL_PREFIX}-${CFG_ARCH}" fi elif [ -d "$EPOCROOT" ] && [ "$XPLATFORM_SYMBIAN" = "yes" ]; then if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then QT_INSTALL_PREFIX="$EPOCROOT/epoc32/" QT_INSTALL_LIBS="$EPOCROOT/epoc32/release/armv5/lib/" fi else QT_INSTALL_PREFIX="/usr/local/Trolltech/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Trolltech/Qt-$QT_VERSION
接下来就会生成makefile文件,配置过程十来分钟左右。配置完毕后执行make。
接下来可以吃个饭或者睡一觉,编译时间大概3个小时左右,比较漫长,耐心等待吧。
经过漫长的等待之后,执行sudo make install来安装,会安装到/usr/local/Trolltech/Qt-4.8.4目录下。安装时间比较短,大概需要几分钟左右,至此,安装完成。
随后就是环境配置了
qmake这个命令需要进行环境变量的配置才能找到的到,我看了下我的系统里已经包含了这个命令了,只是路径不一样。测试如下:
qmake -v 查看qmake的版本which qmake 查看qmake的安装路径ls /usr/bin/qmake -ln 列出文件的详细信息并用数字的uid,gid 代替名称ls /etc/alternatives/qmake -ln在看一下属性就清楚了,可以看到这个地方又链接回去了,那么如果还使用qmake命令的话实际使用的是qmake-qt3,这样就会出现错误。接下来开始修改
rm /etc/alternatives/qmake 先移除ln -s /usr/local/Trolltech/Qt-4.8.4/bin/qmake /etc/alternatives/qmake 自己加链接qmake -v 再次查看qmake另外也可以通过修改环境变量来更新qmake接下来开始安装arm embedded 版本的qt 4.8.5 在这之前要安装tslibtslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因此这里先编译安装tslib,这样在后面编译Qt的时候才能打包编译进去。
首先需要检查一下软件是否安装
sudo apt-get install automake sudo apt-get install autogen sudo apt-get install autoconf确定以上工具都已经安装后,解压安装即可
指定安装路径是/usr/local/tslib
将交叉编译的tslib安装到开发板上其实就是拷贝相关的文件并添加系统环境变量而已,所以相对操作较为简单,主要的就是需要找对目录就行。
按照上面的操作方法,交叉编译安装后的文件在/usr/local/tslib目录下,因此需要拷贝的文件如下
- /usr/local/tslib/lib文件下除去pkgconfig目录外其他所有文件拷贝到开发板/lib目录下
- /usr/local/tslib/etc下的ts.conf拷贝到开发板的/etc下,在复制对应目录之前修改文件如下,也可以复制完成后修改。
下面是ts.conf文件的第一行与第二行
# Uncomment if you wish to use the linux input layer event interface # module_raw input去掉# module_raw input前面的注释,一定要注意中间的空格也去掉,module顶格
最后添加环境变量,通过超级终端在开发板系统中添加环境变量,可以在开发板文件系统的/etc/profile文件里添加,也可以直接添加
export TSLIB_TSDEVICE=/dev/input/event2 //触摸屏设备文件名
export TSLIB_CONFFILE=/etc/ts.conf //配置文件名
export TSLIB_PLUGINDIR=/lib/ts //插件目录
export TSLIB_CALIBFILE=/etc/pointercal //校准的数据文件,由ts_calibrate校准程序生成。
export TSLIB_CONSOLEDEVICE=none //控制台设备文件名
export TSLIB_FBDEVICE=/dev/fb0 //设备名
最后运行测验程序
ts_calibrate 进行校验
ts_test 进行测试
先解压,和pc版本的一样 进入解压后的文件夹
和PC平台下的编译类似,通过运行./configure进行配置生成makefile文件,然后编译安装,只是因为是针对嵌入式平台需要进行一些针对性配置,这里生成一个自动配置文件,可以通过修改文件来方便的更改配置。(其实就是生成一个安装脚本)
vim autoconfig.sh
然后加入
#!/bin/sh
./configure \
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24 \
-fast \
-optimized-qmake \
-pch \
-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-opengl \
-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/usr/local/tslib/include \
-L/usr/local/tslib/lib
exit
运行./autoconfig.sh 生成makefile文件
接下来执行make 进行编译,时间同样需要很长的时间,视个人电脑配置而定,时间大概在半个小时左右吧。
最后make install安装,安装完成后可以在安装目录/usr/local/Trolltech/QtEmbedded-4.8.5-arm 下查看对应文件。
开发板配置
在开发板上的使用其实很简单,只需要拷贝相应的库文件并设置环境变量即可,拷贝的方法按照个人喜好,我是挂载nfs来实现拷贝。
在超级终端输入:cp -R /mnt/Trolltech/QtEmbedded-4.8.4-arm/lib /opt/qt-4.8.5/
设置环境变量:(/etc/profile 文件)
export QTDIR=/opt/qt485 export LD_LIBRARY_PATH=$QTDIRlib:$LD_LIBRARY_PATH export PATH=$QTDIR/bin:$PATH export QWS_MOUSE_PROTO=tslib:/dev/input/event2 export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0" export QT_QWS_FONTDIR=/opt/qt485/lib/fonts在飞凌的OK6410板子中,是在/bin目录下放一个脚本文件,在脚本文件中设置变量来实现运行,这样可以为不同的程序进行单独的配置,也可以设置开机运行( /etc/init.d/rcS)等,用起来比较方便,下面是我的脚本文件,脚本中完成对所有环节变量的配置,当然这里是基于之前的改的,所以有些是多余的。最后运行的程序就是我放在opt目录下的qt程序。
#!/bin/sh
base1=qpe
pid=`/bin/pidof $base1`
if [ -n "$pid" ]; then
killall $base1
fi
base2=qss
pid=`/bin/pidof $base2`
if [ -n "$pid" ]; then
killall $base2
fi
base3=quicklauncher
pid=`/bin/pidof $base3`
if [ -n "$pid" ]; then
killall $base3
fi
base4=fluidlauncher
pid=`/bin/pidof $base4`
if [ -n "$pid" ]; then
killall $base4
fi
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event2
export TSLIB_TSEVENTTYPE=H3600
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export QTDIR=/opt/qt-4.7.1/
export LD_LIBRARY_PATH=$QTDIR/plugins/qtopialmigrate/:$QTDIR/qt_plugins/imageformats/:$QTDIR/lib:/root/tslib/build/lib:$LD_LIBRARY_PATH
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/root/tslib/build/bin
if [ -c /dev/input/event2 ]; then
export QWS_MOUSE_PROTO="Tslib:${TSLIB_TSDEVICE}"
if [ -e /etc/pointercal -a ! -s /etc/pointercal ] ; then
rm /etc/pointercal
/root/tslib/build/bin/ts_calibrate
fi
else
export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
>/etc/pointercal
fi
export QWS_KEYBOARD=TTY:/dev/tty1
FB_SIZE=$(cat /sys/class/graphics/fb0/virtual_size)
#export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
case "$FB_SIZE" in
800,480)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
480,272)
export QWS_DISPLAY="LinuxFb:mmWidth76:mmHeight44:1"
;;
*)
export QWS_DISPLAY="LinuxFb:mmWidth91:mmHeight53:1"
;;
esac
#export QWS_DISPLAY=:1
export HOME=/root/QtE4Home
cd /opt
./filename - qws
其中filename就是你的qt文件名
接下来就是安装qt creator
下载qt creator在linux下的安装文件qt-creator-linux-x86-opensource-2.6.1.bin,这是一个可直接执行的文件
sudo ./qt-creator-linux-x86-opensource-2.6.1.bin
接下来就是我们在windows 常见的软件安装界面
然后就来配置qt creator
首先打开这个IDE
在主界面中从菜单栏点击"工具"->"选项"->在左侧点击“构建和运行”界面
这时我们就可以看到,IDE并没有自动识别安装的QT,这是因为在缺乏系统环境变量的情况下,不知道程序安装到了什么地方,所以这里需要手动设置,手动设置很简单,只需要点击添加,分别添加编译的两个版本的QT安装文件中的qmake文件即可,注意是安装文件,并不是之前解压的源文件。默认的安装路径为/usr/local/Trolltech这个文件夹下有两个文件夹,分别在这两个文件夹下找到bin下的qmake文件
到这里就告诉IDE 安装QT的位置了,由于需要进行编译开发,接下来还需要指定编译器,点击“编译器”选项卡
Qt Creator已经检测到X86的GCC,而我们要是做arm平台开发的话还需要指定用于arm开发的交叉工具链,我的安装路径为/usr/local/arm/4.3.2/bin/需要指定g++文件,如图中所示。配置完成后,点击“应用”。
QT和编译器指定完成后就需要进行下一步配置了,就是对这些工具进行组合,点击“构建套件(kit)”选项卡我这里配置桌面和ARM两项,分别对应在PC和开发板两个平台。
到这里,基本配置就完成了
然后就可以用qt creator 进行界面开发了,
界面开发完成后点击 ”项目“--”添加构建套件“下方就会弹出我刚刚设定的ARM,在arm的构建设置中可以使用默认配置,其他相关选项可以参考桌面选项更改。点击build就会生成arm板上能运行的界面文件了
然后就可以把生成的可执行文件通过nfs 挂载拷贝到开发板上/opt 目录下,然后运行刚才在/bin 文件夹下建立脚本
。
这里我遇到了一个问题:运行的qt界面和系统自带的桌面界面听是存在,之间存在串屏的问题,
解决方法就是关掉所有系统自带的qtopia
ps // 查看当前运行的程序运作情况
然后观察与qtopia有关的程序pid
通过kill关闭他们,例如pid是50,则
kill -9 50
全部关闭后在运行你的qt脚本就ok了,另外如果想让你的系统开机只运行你的qt界面而不用每次都去关闭qtopia,你可以在开机自启动脚本中把qtopia替换为你的qt运行脚本
本文介绍了如何在Ubuntu系统上安装Qt 4.8.5,并准备将其移植到ARM开发板。首先,下载Qt 4.8.5源码,解压后通过配置脚本来生成makefile并进行编译安装。编译过程可能需要半小时左右。安装完成后,将库文件拷贝到开发板并设置环境变量,以确保在开发板上能正常使用。
2135

被折叠的 条评论
为什么被折叠?



