qt交叉编译环境设置方案

1、qt交叉编译环境搭建方法一

(一)准备工作
1、下载最新版本的Qt 4.7.2 
http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.2.tar.gz
2、安装交叉编译器4.3.3或其它版本

3、编译tslib-1.4.1.tar.bz2,这个东西是触摸屏库,编译QT4.7.2时要用到,先拷贝到一个目录,然后用tar xfvj tslib-1.4.1.tar.bz2进行解压缩,进入tslib-1.4.1这个目录,运行./build就可以编译了。编译完之后,会生成一个__install的文件夹,里面有两个文件夹,分别是:inclue lib,后面编译Qt的时候会用到。编译完之后,我把它更改名称为mytslib,并且拷贝到/opt/qt-4.7目录下。这样tslib库的绝对路径是:/opt/qt-4.7/mytslib/lib了,而tslib包含文件夹得绝对路径是:/opt/qt-4.7/mytslib/include
(二)编译Qt 4.7.2
qt-everywhere-opensource-src-4.7.2.tar.gz拷贝到/opt/qt-4.7里面。

用 tar zxvf qt-everywhere-opensource-src-4.7.2.tar.gz解压。

cd /opt/qt-4.7/qt-everywhere-opensource-src-4.7.2.tar.gz/目录。

然后新建一个配置shell文件。我建立一个叫config.sh的文件。然后,把

./configure -prefix /opt/EmbedSky/qt-4.7/qtlib –embedded arm -release -opensource -fast -no-accessibility -no-scripttools -no-mmx -no-multimedia  -no-svg -no-webkit -no-3dnow -no-sse -no-sse2 -silent -qt-libpng -qt-libjpeg -no-libmng -no-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-glib -qt-mouse-tslib -I /opt/EmbedSky/qt-4.7/mytslib/include  -L /opt/EmbedSky/qt-4.7/mytslib/lib 

拷贝到config.sh件里面并保存。然后在/opt/EmbedSky/qt-4.7/ qt-everywhere-opensource-src-4.7.0-beta2下执行./config.sh。就可以进行Qt4.7 Beta II的裁剪了。上面的配置信息是可以根据需要进行修改的,详细配置信息可以参考http://www.qtcn.org/bbs/read.php?tid=19214
执行上面脚本后,在/opt/EmbedSky/qt-4.7/目录下建立一个qtlib目录。用来存放编译后生成的库文件,-prefix /opt/EmbedSky/qt-4.7/qtlib这个参数的意思是把库文件拷贝到/opt/EmbedSky/qt-4.7/qtlib目录下。-I /opt/EmbedSky/qt-4.7/mytslib/include  -L /opt/EmbedSky/qt-4.7/mytslib/lib 一定要正确,就是第一大步编译的那个tslib,还记得吗?现在用上他了。然后执行命令make ,完毕后再执行make install。我的电脑编译过程要一个小时左右。那么在/opt/EmbedSky/qt-4.7/qtli 就生成了Qt 4.7 Beta IIarm上运行的库了。把它拷贝到文件系统就OK了。拷到哪里呢?这里可以参考天嵌的手册。不过这里还是说下吧。我用的是天嵌光盘自带的Qt 4.5 文件系统。例如我把文件系统解压到了/opt/EmbedSky/目录下。并且把文件系统文件夹的名称改为了root_nfs。那么进入/opt/EmbedSky/root_nfs/opt/qt-4.5/目录。然后rm lib –R删除lib目录,再rm plugins –R 删除plugins目录。把刚才qtlib文件夹里面的libplugins拷贝到qt-4.5目录下。

cp /opt/EmbedSky/qt-4.7/qtlib/lib  /opt/EmbedSky/root_nfs/opt/qt-4.7/    

cp /opt/EmbedSky/qt-4.7/qtlib/plugins /opt/EmbedSky/root_nfs/opt/qt-4.7/
最后,把/opt/EmbedSky/root_nfs/opt下的qt-4.5更改名称为 qt-4.7,操作是:mv qt-4.5 qt-4.7。现在在更改一下文件系统/bin/下的qt4文件,更改如下:


#!/bin/sh

echo Start Qt-4.7 > /dev/tq2440_serial0
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_CONFFILE=/etc/ts.conf
export set TSLIB_PLUGINDIR=/lib/ts
export set HOME=/root
export set QTDIR=/opt/qt-4.7
export set QPEDIR=/opt/qt-4.7
export set QTDIR1=/sbin
export set QWS_DISPLAY="LinuxFB:/dev/fb0"
export set QWS_DISPLAY="LinuxFB:mmWidth130:mmHeight100:0"
export set QWS_KEYBOARD="TTY:/dev/tty1"
export set QWS_MOUSE_PROTO="TSLIB:/dev/event0"
export set QT_PLUGIN_PATH=$QTDIR/plugins/
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export set PATH=$QPEDIR/bin:$PATH
export set LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/plugins/imageformats:$LD_LIBRARY_PATH

if [ -f /etc/pointercal ]  
; then
    #ts_calibrate         
        /qml/qml -qws
        # > /dev/null 2>/dev/null
else
        ts_calibrate
        /qml/qml -qws
        $QPEDIR/bin/calculator -qws
        # >  
/dev/null 2>/dev/null
fi


下面这几行也可以用自己第一步编译的tslib,这里我偷懒,直接用文件系统里面的。哈哈
export set TSLIB_TSDEVICE=/dev/event0
export set TSLIB_CALIBFILE=/etc/pointercal
export set TSLIB_CONFFILE=/etc/ts.conf
export set TSLIB_PLUGINDIR=/lib/ts

(三)测试Qt 4.7 Beta II 是否可用
怎么测试Qt 4.7 Beta II的编译已经成功了呢?Qt4.7QML功能。写个打开QML的程序,然后在程序里面调用该QML就知道Qt4.7是否可用了。在附件里面有我的工程。可以拿去编译一下。把这个工程放到/opt/EmbedSky/root_nfs下编译。然后nfs加载。就可以运行QML工程了。我的工程很简单。就是调用一个HELLO WORLD qml脚本。更加炫的效果你去QT example里面的declarative文件夹里面找。

现在QTCreate用的是最新版本,但ARM版上的QT却是几年前的版本。在这次开地过程中为了验证自己的QT程序是不是版本不同的原因而引起的程序崩溃,而特意换成最新版本。所以简单QT配置:
./configure -prefix /opt/EmbedSky/qt-4.8/qtlib -embedded arm -release -opensource -fast -no-accessibility -qt-sql-sqlite -scripttools -I/tslib-1.4/inclued -L/tslib-1.4/lib

qte4.5.2+qt creator-2009.05交叉编译环境搭建法2

    之前安装这个软件最后不是很成功,所以这次通过uncle Google又找到了另一种方法进行尝试。3x uncle Google,通过这次亲身体会到了uncle比baidu强大的地方来。

 

                  安装环境VMware ACE + CentOS 5.4

                 交叉编译器arm-linux-3.4.1

                触摸屏支持tslib1.4

   嵌入式应用程序开发环境qte4.5.2 + qt creator-2009.05

                需要的软件qt-embedded-linux-opensource-src-4.5.2.tar.gz

     软件下载地址:http://get.qtsoftware.com/qt/source/qt-embedded-linux-opensource-src-4.5.2.tar.gz

 

1.安装qt-embedded-linux-opensource-src-4.5.2-arm   

    在用户目录下建立一个src目录,用于存放编译源文件qt-embedded-linux-opensource-src-4.5.2.tar.bz2。将其解压得到qt-embedded-linux-opensource-src-4.5.2,重命令为qt-embedded-linux-opensource-src-4.5.2-arm。

    #cd qt-embedded-linux-opensource-src-4.5.2-arm
    #./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.2-arm -embedded arm
   在这里编译器报错:
   The target system byte order could not be detected!Turn on verbose messaging (-v) to see the final report.You can use the -little-endian or -big-endian switch to
    ./configure to continue.
    这时我选择了小端编译的方式。 -little-endian编译通过。

    #./configure  -little-endian
    #make
    #make install

    上面的时间很长,因为选择全编译的原因,大概需要2个多小时。

    好了,qt-embedded-arm被安装在/usr/local/Trolltech/QtEmbedded-4.5.2-arm下。

 

2.qte4.5.2+qt creator-2009.05的qt交叉编译环境搭建
    上面我们已经完成了qt-embedded-arm的安装,现在我们就来做一下交叉编译环境的搭建,这一步也是上次我没有成功的地方。下图是我上次没有编译对的地方,打开tools/options可以看到Debugging Helper的后面是一个小红差号,这个当然不对。

qt交叉编译环境设置方案_第1张图片

    重新进入这个界面,选择刚刚装好的qt-embedded-arm中的qmake,他的目录是/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin/qmake,点击Rebuild,知道看到绿色小对号为止,否则都是错误的,正确的画面如下图所示:

qt交叉编译环境设置方案_第2张图片

   

qt交叉编译环境搭建--利用编译好的ARM QT库  

 手上也刚好有一个编译好的ARM QT库,QtEmbedded-4.7.3-arm.tar.gz

如果按照平时的那种方法的话估计编译半天 故尝试使用编译好的QT库来一发试试

运行环境:Ubuntu 13.10虚拟机

首先是一顿arm-linux-gcc arm-linux-g 的安装

然后把编译好的QT库解压 由于撸主第一次使用已经编译好的QT库,就直接在工程文件夹内撸了一翻

 

/root/Desktop/QtEmbedded-4.7.3-arm/bin/qmake           //楼主的库直接扔桌面解压了

 

当然是不会有结果的啦。当时报错如下

 

QMAKESPEC has not been set, so configuration cannot be deduced

 

Qmakespec 没设置好,得手动找一找g 的位置,弄好我们的环境变量先,之前上网找很多都是修改用户目录下的.bash_profile 但我死活找不到 据说默认隐藏 cd进去ls –al .bash_profile一番什么都没有,故楼主使用稍微好一点肯定没错的修改方案

gedit /etc/profile

然后最后一行插入撸主qt地址还有g 地址的环境变量

export QTDIR=/root/Desktop/QtEmbedded-4.7.3-arm  //撸主的qt库位置
export PATH=$QTDIR/bin:$PATH
export TSLIB_CONSOLEDEVICE=none
export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib
export QMAKESPEC=/root/Desktop/QtEmbedded-4.7.3-arm/mkspecs/linux-g  //撸主的g++  位置
 
最后一定得重启一下不然系统不会再读(更新的那个指令忘了)
重启之后撸主马上看了看qmake的版本看看有没有改变,果然
修改成功,进了QT工程文件目录qmake成功
以为万事OK的时候突然make出错。。
至于报了什么错当时没截图大概是说cd不到目录文件夹的make
这是第一次出现这种情况(╯‵□′)╯︵┻━┻
然后,然后撸主打开了下刚刚qmake成功生成出来的Makefile
往下一撸发现。。
等等。。撸主记得我的库在桌面。。。
现在重新改过觉得有点麻烦。。
于是就在/usr/local 新建了一个Trolltech文件夹然后 建立一个访问qt库的快捷方式
ln -s /root/Desktop/QtEmbedded-4.7.3-arm   QtEmbedded-4.7.3-arm
这样就能访问到了吧。
果然回去之后在工程目录make
 

 到最后,其实一开始应该把编译好的qt库直接放在usr /bin/Trolltech里面!然后进行环境变量配置!

另外我下载的QT库地址ishare.iask.sina.com.cn/f/24819673.html 

你可能感兴趣的:(qt交叉编译环境设置方案)