您的位置:首页 > 运维架构 > Linux

在Linux中分别安装应用于不同平台的QT:PC;嵌入式X86;ARM。

2016-05-19 19:22 501 查看
在Linux中分别安装应用于不同平台的QT:PC;嵌入式X86;ARM。

这三者PC版、嵌入式X86版和ARM版的区别主要体现在:当configure时分别加了不同的参数,具体区别是:

PC平台:在linux中全安装qt,用它编译好程序后,直接用“./”就可运行。

嵌入式X86平台:带有qvfb功能,在PC机上可以模拟应用程序在arm开发板上的运行情况。用此编译好的程序,只用“./”命令不可以运行,必须加上参数 -qvfb
-qws;

ARM平台:编译好的程序,用于在arm平台上运行。

1. 系统环境

主机操作系统:ubuntu10.04

主机编译器:gcc4.4.3,

交叉编译器:arm-linux-gcc-4.3.2

2软件包:

2.1 qt源代码

qt-everywhere-opensource-src-4.6.3.tar.gz、
ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.3.tar.gz
也可以在ftp://ftp.qt.nokia.com/qt/source/下找对应的版本

2.2触摸屏校验工具

tslib-1.4.tar.gz

下载地址:

http://ishare.iask.sina.com.cn/f/21567219.html

3安装交叉编译器

详细见:《Arm-linux-gcc-4.3.2安装步骤

/article/3715707.html

4安装触摸屏校验工具

把tslib-1.4.tar.gz放到一个目录下,比如/opt目录下。接着执行命令如下:
#tar zxvf tslib-1.4.tar.gz


执行命令cd tslib,进入tslib当前目录,接着执行命令如下:
#./autogen.sh


然后接着执行配置命令:
#./configure     --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes


最后执行编译命令和安装命令如下:
1.        make

2.        make install


如果以上步骤没错,则可以在/usr/local/tslib下出现我们需要的库文件,这些库文件我们移植时会用到。

编译期间出现的错误:./autogen.sh: 4: autoreconf:
not found

解决:sudo apt-get install autoconf automake libtool

/article/3715708.html

5.编译Qt-4.6.3库文件

5.1解压:

把qt-everywhere-opensource-src-4.6.3.tar.gz放到/opt目录下。接着执行命令如下:
1.        tar zxvf qt-everywhere-opensource-src-4.6.3.tar.gz


接着把解压出来的目录重名成qt-everywhere-opensource-src-4.6.3文件复制两份,把这三份文件分别重命名为:pc,qt-embedded-4.6.3-x86 qt-embedded-4.6.3-arm






5.2编译 PC 版

进入pc目录,执行如下操作:

#./configure

# make

# make install

配置configure的时候会提问是使用什么版本,选择开源版本“o”,接受他的协议yes,下面的安装也一样。
“Which edition of Qt do you wantto use?”

然后给你两个类型供选择:

Type'c' if you want to use the Commercial Edition.

Type'o' if you want to use the Open Source Edition.

第一个是商业版,第二个是自由版。

选择 'o'(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。

这时候,出现许可界面。

选择 'yes'接受许可协议。

开始生成 makefile文件。这个大约需要 5 -10分钟的时间。
安装过程比较长,由于VM默认只是一个CPU,可以调整CPU的个数和你实际的机器一致,
Make命令添加-j3参数允许多线程编译,可以加快速度,下面的编译也是一样。编译的时候可以看到占用CPU的百分比100%

编译过程中出现的问题:

A:出错:Basic XLibfunctionality test failed!

解决方法:sudo apt-get install libx11-dev libxext-dev libxtst-dev

/article/3715709.html

B:出错:collect2:ld
terminated with signal 11

解决:加大swap空间
http://blog.csdn.net/imxiangzi/article/details/7453008
5.3编译嵌入式x86版

进入x86目录,执行如下操作:

# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb

# make

# make install

安装过程比较长,没有碰到过错误。

编译安装PC版中的 qvfb:

进入pc/tools/qvfb/目录,执行如下操作:

#make

编译完毕,将pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.6.3/bin目录。

5.4编译嵌入式arm版(需要 arm-linux-gcc 的支持)

必须加上“-prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm ”参数, 不然安装后不在QtEmbedded-4.6.3-arm文件夹下,而是覆盖了QtEmbedded-4.6.3。

# ./configure \

-prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm \

-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

如果放弃配置,则使用命令:# make confclean

编译:# make

安装:# make install

安装完成后,在/usr/local/Trolltech目录中有三个文件夹:Qt-4.6.3、QtEmbedded-4.6.3、QtEmbedded-4.6.3-arm。

5.5测试qvfb

为了方便使用qvfb模拟ARM的结果,在环境中添加qvfb的路径

1. 输入命令: gedit /.bashrc(或者是vim ~./bashrc)编辑.bashrc文件,在文件末尾加入如上面的内容

export PATH=/usr/local/Trolltech/QtEmbedded-4.6.3/bin:$PATH

2. 重启,测试是否加入成功

echo $PATH看是否显示刚才添加的路径

3. 测试

命令:#qvfb -width 800 -height 480 &

其中&表示后台运行。



将会出现界面



表示qvfb启动成功

====================================================================

主要参考:

1.QT嵌入式环境搭建与移植
http://blog.chinaunix.net/uid-26119896-id-3141782.html
2.Linux下实现Qt 4.6.3移植Ubuntu10.10篇
http://blog.csdn.net/defonds/article/details/4941746
3.Linux 下编译并安装配置 Qt 全过程
http://mobile.51cto.com/symbian-273308.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: