对于安装QT,一直纠结了很久很久。折腾了很久很久,连续一周,一天到晚都在摸索,不停地编译配置,不停地重做、撤销,到当前为止还不知道问题有没有彻底解决,先记录一下,后续遇到问题再修正今天的文章。
我的安装平台:
1.虚拟机VMware 7.0
2.嵌入式系统Ubuntu 10.10
2.交叉编译工具:arm-linux-gcc-4.3.2
3.QT安装包:
1)QT-X11-SDK简称做QT-X11:qt-sdk-linux-x86-opensource-2010.05.1.bin (其实就是Qt Creator !)
这是直接下载的编译好的二进制SDK包;其实也可以下载源代码包src然后再编译安装,网上有好多文章都是由源代码包编译后再安装的,在NOKIA官网上4.7.2版本的没有发现有源代码包。但是安装二进制文件可以节省编译时间和空间。安装好二进制文件之后仍需要独立编译QVFB。其实这个sdk包是QT Creator!一个IDE集成开发环境!可以省去你在终端中用命令行来编译和调试!但是有时候你也许会发现用命令行更爽!
2)Qt Embedded for Linux简称做QTE:qt-everywhere-opensource-src-4.7.2.tar.gz是源代码包;
说明:其中QT-X11可以产生Qt开发工具,如qmake 、designer等等,最重要的是可以得到qvfb(因为sdk中并没有为什么编译好,所以qvfb的编译安装需要大家自己进行参见下一篇)。嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应用程序。QTE版本就是专门用于嵌入式开发的版本。所以大家需要分别编译运行于X86架构和arm架构的QT!
这两个安装包都可以直接在xp环境下下载,下载较快,然后放到虚拟机ubuntu里面。
接下来开始安装:
1.建立目录
首先在/home/fengchao目录下新建/qtenv文件夹为了文件管理方便,再在qtenv下分别建立三个文件夹:arm,x86,qtsdk;使用mkdir命令或者直接在目录下右键新建。
qtsdk用于安装QT-X11;
arm用于存放QTE的arm版本;
x86用于存放QTE的x86版本。
2.安装QT-X11:
qt-sdk-linux-x86-opensource-2010.05.1.bin放在/qtsdk文件夹中
$ cd ~/qtenv/qtsdk
$ chmod u+x qt-sdk-linux-x86-opensource-2010.05.1.bin
$ ./qt-sdk-linux-x86-opensource-2010.05.1.bin
之后开始图形化的安装,像在xp环境安装软件一样,然后选择安装目录为/home/fengchao/qtenv/qtsdk,一路NEXT。
3.解压QTE源代码包
1)将源代码包分别复制到/arm和/x86下:
直接在目录下复制即可,不必使用命令行操作。
2)解压缩:
$ cd qtenv/arm
$ tar xzvf qt-everywhere-opensource-src-4.7.2.tar.gz
(解压gz文件用xzvf,解压bz2 文件用xjvf)
$ mv qt-everywhere-opensource-src-4.7.2 arm
(把/qt-everywhere-opensource-src-4.7.2目录下的文件放到/arm文件夹下,即改名为arm,方便输入)
$ cd qtenv/x86
$ tar xzvf qt-everywhere-opensource-src-4.7.2.tar.gz
(解压gz文件用xzvf,解压bz2 文件用xjvf)
$ mv qt-everywhere-opensource-src-4.7.2 x86
(把/qt-everywhere-opensource-src-4.7.2目录下的文件放到/x86文件夹下,即改名为x86,方便输入)
4.解压缩后分别针对arm平台和x86平台进行编译配置
编译arm版本的QT
$ cd ~/qtenv/arm
$ ./configure -prefix $HOME/qtenv/arm -embedded arm -nomake docs -nomake demo -nomake examples
$ sudo make
$ sudo make install
编译x86版本的QT
$ cd ~/qtenv/x86
$ ./configure -prefix $HOME/qtenv/x86 -embedded x86 -nomake docs -nomake demo -nomake examples -qvfb
$ sudo make
$ sudo make install
sudo 获得root权限,否则可能出错。
此过程花费过多时间,大概几个小时左右,视电脑配置而定。
此过程出现错误较多,都可以解决,要有耐性。
此编译工程中,编译arm版本的工具是arm-linux-g++、编译x86版本的工具是g++;编译的时候注意查看是否正确!我就犯过这样的错误,把上面的编译指令输错!导致后面更多的莫名其妙的错误!不得不重新来过!
技巧:
1)configure之后想清除重新来过,使用make confclean,再重新configure即可
2)make之后想清除重新来过,使用make clean,再make
5.最后是环境变量的设置
这个也是非常重要的一步,前面说的目录管理,在这一步显的非常重要了
我的处理方法是:在各文件夹下新建shell脚这篇文章件。
1)QT-X11:
$ cd qtenv/qtsdk
$ sudo gedit setenv.sh
添加如下内容:
PATH=/home/fengchao/qtenv/qtsdk/qt/bin:$PATH
LD_LIBRARY_PATH=/home/fengchao/qtenv/qtsdk/lib:$LD_LIBRARY_PATH
export PATH
export LD_LIBRARY_PATH
保存退出,文件放在qtenv/qtsdk下!
2)x86:
$ cd qtenv/x86
$ sudo gedit setenv.sh
添加如下内容:
QTEDIR=/home/fengchao/qtenv/qtsdk/x86
PATH=/home/fengchao/qtenv/qtsdk/x86/bin:$PATH
LD_LIBRARY_PATH=/home/fengchao/qtenv/qtsdk/x86/lib:$LD_LIBRARY_PATH
export QTEDIR
export PATH
export LD_LIBRARY_PATH
保存退出文件放在qtenv/x86下!
3)arm:
$ cd qtenv/arm
$ sudo gedit setenv.sh
添加如下内容:
QTEDIR=/home/fengchao/qtenv/qtsdk/arm
PATH=/home/fengchao/qtenv/qtsdk/arm/bin:$PATH
LD_LIBRARY_PATH=/home/fengchao/qtenv/qtsdk/arm/lib:$LD_LIBRARY_PATH
export QTEDIR
export PATH
export LD_LIBRARY_PATH
保存退出文件放在qtenv/arm下!
在运行的时候分别运行对应的脚本即可,比如大家要用QT-X11:
cd /qtenv/qtsdk
source setenv.sh
然后就可以用qmake designer等工具了.
注意:通过运行这几个shell脚本来改变环境变量。整个环境变量的改变只有在当前的终端下才有效。当打开其他终端后,必须重新执行对应的shell脚本。
对应所在的路径,在大家的机器上可能不尽相同,领会意思就行。