博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux中安装Qt 4.8.5
阅读量:4030 次
发布时间:2019-05-24

本文共 7856 字,大约阅读时间需要 26 分钟。

首先说一下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#-------------------------------------------------------------------------------#prefixif [ -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 在这之前要安装tslib tslib是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。因此这里先编译安装tslib,这样在后面编译Qt的时候才能打包编译进去。 首先需要检查一下软件是否安装 sudo apt-get install automakesudo apt-get install autogensudo 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      进行测试

OK!万事俱备,开始安装arm板的qt

先解压,和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/qt485export 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运行脚本

 

转载地址:http://ykhbi.baihongyu.com/

你可能感兴趣的文章
浅析:setsockopt()改善程序的健壮性
查看>>
关于对象赋值及返回临时对象过程中的构造与析构
查看>>
VS 2005 CRT函数的安全性增强版本
查看>>
SQL 多表联合查询
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
CLOSE_WAIT和TIME_WAIT
查看>>
在C++中使用Lua
查看>>
在Dll中调用自身的位图资源
查看>>
IP校验和详解
查看>>
C++中使用Mongo执行count和distinct运算
查看>>
一些socket的编程经验
查看>>
socket编程中select的使用
查看>>
C++获取文件大小常用技巧分享
查看>>
未来5年大机遇:做贩卖多巴胺的超级玩家
查看>>
关于AIS编码解码的两个小问题
查看>>
GitHub 万星推荐:黑客成长技术清单
查看>>
可以在线C++编译的工具站点
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>