前两天由于Ubuntu8.04频繁死机,一激动给系统来了个大换血,装了个Ubuntu9.04 Final版,重新编译了一下QT4.5和Qt/Embedded 4.5。都是目前最新版本的记录如下:
说明:
我的开发环境:
【硬件】: CPU:P4 2.8 内存:2G 硬盘:160G。
【操作系统】:Ubuntu 9.0.4。
【交叉编译器】:armlinux-gcc-3.4.1
【用户】:root
具体步骤与说明:
1. 下载源码包
qt-x11-opensource-src-4.5.0.tar.bz2
qt-embedded-linux-opensource-src-4.5.0.tar.bz2
下载地址:ftp://ftp.qt.nokia.com/qt/source/
2.编译及安装qt-x11-opensource-src-4.5.0
qt-x11版本可以产生Qt开发工具,如designer等等,最重要的是可以得到qvfb,嵌入式的开发有了qvfb,就可以不需要实际的开发板,也可以开发Qt应程序。qt-embedded版本就是专门用于嵌入式方面的版本。
tar xjvf qt-x11-opensource-src-4.5.0.tar.bz2
cd qt-x11-opensource-src-4.5.0
./configure
make: g++:命令未找到
make: *** [outlook.o] 错误 127
出现错误是因为没有安装g++编译器,运行以下命令来安装:
sudo apt-get install g++
应该就好了,如果还没好,再安装这个:
sudo apt-get install pentium-builder
直 接运行 sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev 就可以了
make
sudo make install
历经漫长的编译过程,约一个半小时,默认安装在/usr/local/Trolltech/Qt-4.5.0下.编译完成后源程序不要删除,还有用。
3.编译及安装qt-embedded-linux-opensource-src-4.5.0
在用户目录下建立一个src目录,用于存放编译源文件qt-embedded-linux-opensource-src- 4.5.0.tar.bz2。将其解压得到qt-embedded-linux-opensource-src-4.5.0,重命名为qt- embedded-linux-opensource-src-4.5.0-x86. 再次解压qt-embedded-linux-opensource-src-4.5.0.tar.bz2,并重命令为qt-embedded- linux-opensource-src-4.5.0-arm.为什么有两个复制呢?我们可以从他们的名字上就不难看出前者是适合x架构的,后者适合 arm架构的,如果有开发板的话,可以只编译qt-embedded版本成arm架构的就可以了,但是很多时候用qvfb的话,开发会方便很多,所以多编译一个x86架构的也不错。
mkdir ~/src
mv qt-embedded-linux-opensource-src-4.5.0.tar.bz2 ~/src
tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-x86
tar xjvf qt-embedded-linux-opensource-src-4.5.0.tar.bz2
mv qt-embedded-linux-opensource-src-4.5.0 qt-embedded-linux-opensource-src-4.5.0-arm
cd qt-embedded-linux-opensource-src-4.5.0-x86
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -qvfb
make
make install
-------OK!qt-embedded-x86被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-x86下.
cd qt-embedded-linux-opensource-src-4.5.0-arm
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-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
-------OK!qt-embedded-arm被安装在/usr/local/Trolltech/QtEmbedded-4.5.0-arm下.
4.至此我们已经安装好了qt-x11版,即在PC机上运行的QT,qt-embedded-x86版(x86体系的嵌入式板子上运行的QT)和qt-embedded-arm(arm板子上运行的QT).下一步:设置环境变量
(1)qt-x11:
vi setenv.sh
添加如下内容:
PATH=/usr/local/Trolltech/Qt-4.5.0/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.5.0/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/Qt-4.5.0中。
(2)qt-embedded-x86:
vi setenv.sh
添加如下内容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-x86
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-x86/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-x86中。
(3)qt-embedded-arm:
vi setenv.sh
添加如下内容:
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.5.0-arm
PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.5.0-arm/lib:$LD_LIBRARY_PATH
保存退出.移到/usr/local/Trolltech/QtEmbedded-4.5.0-arm中。
我们在运行的时候分别运行对应的脚本即可,比如我们要用qt-x11:
cd /usr/local/Trolltech/Qt-4.5.0
source setenv.sh
然后就可以用qmake designer等工具了.
5.做到这一步还有qvfb没有编译,到qt-x11-opensource-src-4.5.0中重新编译qvfb即可
cd qt-x11-opensource-src-4.5.0
cd /tools/qvfb
make --会在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我们将它copy至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下
cp ../..bin/qvfb /usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin
6.做一个测试
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86
source setenv.sh
cd /usr/local/Trolltech/QtEmbedded-4.5.0-x86/demos/books
qvfb -width 640 -height 480 &
./books -qws
效果截图: