分类: LINUX
2011-11-17 12:57:56
注意点1:在ubuntu下安装QtE环境,如果是使用用户环境下安装的话,以后再编译程序的时候,直接在用户环境下编译就可以,如果是在root下安装的,那么以后编译程序就得在root环境下编译。
注意点2:安装QtE的版本要和交叉编译器的版本想匹配。我这边的使用的QtE版本的4.6.3,交叉编译器的版本是4.4.3
一、安装Qt Creator
1、去QT的官网()
下载文件:直接下载 Qt SDK for Linux/X11 32-bit** (422 MB) (这样比较简便,虽然可能占的空间要大一点)
2,第二步就是安装刚刚下载的二进制文件:
chmod u+x qt-sdk-linux-x86-opensource-2010.05.1.bin
./qt-sdk-linux-x86-opensource-2010.05.1.bin
二、搭建嵌入式QT环境;
从官网下载QT的嵌入式版,注意官网上的嵌入式版和linux版都是199M,其实他们在官网上的位置不一样,
Qt libraries 4.6.3 for embedded Linux (199 MB)
Qt libraries 4.6.3 for Linux/X11(199 MB)
其实下载下来是一样(看他们的下载路径都是一样的)的,
下载下来的文件名为:
qt-everywhere-opensource-src-4.6.3.tar.gz
解压 tar zxvf qt-everywhere-opensource-src-4.6.3.tar.gz
把解压后的文件再复制两份(一共三份),
分别取名为pc; x86; arm;
然后开始分别编译:
1.编译PC, 在ubuntu下是会缺少几个开发包的,这边先安装这些包:
sudo apt-get install libX11-dev
sudo apt-get install libXext-dev
sudo apt-get install libXtst-dev
sudo apt-get install libxrender-dev
cd pc
sudo ./configure(选 o 再选 yes)
sudo make
sudo make install
2. 编译嵌入式x86版:
进入x86目录,设置其以QVFB作为显示输出
#./configure -prefix /usr/local/Trolltech/QtEmbedded-x86 -embedded x86 -qvfb
# make
# make install
安装过程比较长,没有碰到过错误。
编译安装PC 版中的 qvfb:
进入pc/tools/qvfb/目录
#make
#make install
2.1测试嵌入式 x86 :
cd /usr/local/Trolltech/QtEmbedded-4.6.3/demos/books
qvfb -width 640 -height 480 &
./books -qws
执行完qvfb;弹出一个类似终端的窗口,窗口背景为黑色,应该相当与模拟器的屏幕执行完book;
窗口背景不再是黑色,屏幕中弹出一个类似于图书管理系统的界面,这就是我们想要看到的!
这一步可能出错,就是找不到qvfb,提示你安装qt4---*****;和qt3---***;
直接apt-get 安装第二个即可。
sudo apt-get install qt3-dev-tools-embedded
修复测试安装是否正确完成
3、安装tslib(必须安装)
下载tslib-1.4.
./autogen.sh 生成配置文件
CC= $ARM_TOOL_PATH/arm-linux-gcc
X= $ARM_TOOL_PATH/arm-linux-g++
./configure --prefix=/usr/local/tslib-1.4 --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
make
make install
4. 编译arm版:
cd arm
./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp (qte版本不一样的话,configure后面的参数也不一样,这个要注意)
make
sudo make install
等待安装完成!
如果出现问题如下:
make之后:
/usr/bin/ld: .obj/release-shared/harfbuzz-buffer.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: .obj/release-shared/harfbuzz-buffer.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: .obj/release-shared/harfbuzz-buffer.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: .obj/release-shared/harfbuzz-buffer.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: .obj/release-shared/harfbuzz-buffer.o: Relocations in generic ELF (EM: 40)
/usr/bin/ld: .obj/release-shared/harfbuzz-buffer.o: Relocations in generic ELF (EM: 40)
.obj/release-shared/harfbuzz-buffer.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status make[1]: *** [../../lib/libQtCore.so.4.6.3]
错误 1 make[1]:正在离开目录 `/opt/arm/src/corelib' make: *** [sub-corelib-make_default-ordered]
说明你的qte版本和交叉编译器的版本不相符合,需要修改其中一个版本,或者说你configure后面的参数设置错误
============================================================= 安装完成后,在 /usr/local/Trolltech 目录中有三个文件夹:
Qt-4.6.3、QtEmbedded-4.6.3、QtEmbedded-4.6.3-arm。
4、编写环境变量设置文件(方便不同环境切换):
(这部分可以不做,如果不做的话,在编译程序的时候,要指明是使用哪个qmake)
~/.setenv.sh(对应于PC版Qt):
PATH=/usr/local/Trolltech/Qt-4.6.3/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3/lib:$LD_LIBRARY_PATH
~/.setenv.sh:(x86版)
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.6.3
PATH=/usr/local/Trolltech/QtEmbedded-4.6.3/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.6.3/lib:$LD_LIBRARY_PATH
~/.setenv.sh: (arm版)
QTEDIR=/usr/local/Trolltech/QtEmbedded-4.6.3-arm
PATH=/usr/local/Trolltech/QtEmbedded-4.6.3-arm/bin:$PATH
LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib:$LD_LIBRARY_PATH
5、移植
5.1将 PC 机上 /usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib 中的库复制到2440的 /usr/local/Trolltech/QtEmbedded-4.6.3-arm/lib(对应目录复制)。
5.2将 PC 机上 /usr/local/tslib 中的库复制到2440的 /usr/local 。如果运行时还缺少其他的库,复制方法相同。
5.3为支持触摸屏,开机自动设置环境变量,
在2440的 /etc/profile中追加:
export LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH export TSLIB_ROOT=/usr/local/lib
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_PLUGINDIR=/usr/local/lib/ts
export TSLIB_CONSOLEDEVICE=none
export TSLIB_CONFFILE=/usr/local/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
注:可用$ cat /dev/input/event0 测试触摸屏
5.4取消/usr/local/etc/ts.conf中的第一个注释:
# module_raw input (去掉#,并且该行顶格)
5.5运行 /usr/local/bin/ts_calibrate 校正触摸屏。
6、程序编译:
6.1 以下编译方式,是把配置文件放到用户目录下,取了3个不同的名字,也可以把它们分别放到三个安装目录下,编译的时候进到目录里边运行。使用:我们在运行的时候分别运行对应的脚本即可,比如我们要用qt-x11: cd /usr/local/Trolltech/Qt-4.6.3 source setenv.sh
然后就可以用qmake designer等工具了. )
PC版:
$ make distclean
$ source ~/.setenv-qt-x11.sh
$ qmake
$ make
arm 版:
$ make distclean
$ source ~/.setenv-qt-arm.sh
$ qmake
$ make
6.2 如果之前的文件配置没做的话,那么在以后的编译的时候,
pc版:
make clean
qmake –project
qmake
make
x86版
make clean
/usr/local/ Trolltech / QtEmbedded-4.6.3/bin/qmake –project
/usr/local/ Trolltech / QtEmbedded-4.6.3/bin/qmake
make
arm版
make clean
/usr/local/ Trolltech / QtEmbedded-4.6.3-arm/bin/qmake –project
/usr/local/ Trolltech / QtEmbedded-4.6.3-arm/bin/qmake
make
推荐几篇,我配环境时,觉得不错的文章:
http://blog.csdn.net/PenglueR/archive/2009/12/10/4981753.aspx
http://hi.baidu.com/jesserei/blog/item/861c201e18b1cd04314e1500.html
=========================================================================================
开发环境:
linux平台:RHEL5
QT版本:qt-everywhere-opensource-src-4.7.3.tar.gz
移植平台:S3C2440
交叉工具链:arm-linux-gcc4.3.2(由友善之臂提供)
触摸屏库:tslib1.4.tar.gz
【说明】移植触摸屏库之前,必须保证触摸屏驱动已经可以正常使用!
1. 下载源码包
从上下载qt-everywhere-opensource-src-4.7.3.tar.gz源码包
从上下载tslib1.4.tar.gz
2. 移植tslib
① 解压缩tslib1.4.tar.gz
# tar xzvf tslib1.4.tar.gz
# cd tslib1.4
② # ./autogen.sh // 用于生产configure(对于没有configure文件的,这一步必须做)
③ # ./configure --prefix=/usr/local/tslib/--host=arm-linuxac_cv_func_malloc_0_nonnull=yes
//--prefix= 后面加上安装路径
④ # make
⑤ # make install // 也可以用make install-strip生成瘦身应用程序和库
/**=======编译和安装后在主机的/usr/local/tslib目录下可以看到编译好的程序和库。=======**/
⑥ 修改tslib/etc目录下的ts.conf文件,将module_raw input前面的注释去掉,前面不要有空格
⑦ 移植库文件到你制作的根文件系统中
# cp –arf /usr/local/tslib/* ***/rootfs/usr/local/tslib
⑧ 在根文件系统的etc/profile文件中加入运行tslib的所需要的环境变量
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/event0 (对应的触摸屏设备,根据实际情况修改)
export TSLIB_FBDEVICE=/dev/fb0 (对应的framebuffer设备)
export TSLIB_CALIBFILE=/etc/pointercal (触摸屏校正生成的文件,运行***/tslib/bin/ts_calibrate产生)
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONSOLEDEVICE=none
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
⑨ 测试
完成以上的配置后,就可以进入/usr/local/tslib/bin目录下运行./ts_test进行测试了,不过这之前最好先运行./ts_calibrate对触摸屏进行校正
到目前为止,已经迈出了一大步,恭喜一下自己
3. 移植QTE
① 将 qt-everywhere-opensource-src-4.7.3.tar.gz压缩包解压
# tar xzvf qt-everywhere-opensource-src-4.7.3.tar.gz
# cd qt-everywhere-opensource-src-4.7.3
② 配置QT(可以在这里对Qt进行裁剪,蓝色是比较重要的选项)
# ./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
③ 编译 # make
④ 安装 # make install
⑤ 安装完成后,在 /usr/local/Trolltech 目录中就会有一个文件夹:QtEmbedded-4.7.3-arm
移植相应的文件 # cp -r /usr/local/Trolltech ***/rootfs/usr/local/
⑥ 设置支持QTE的环境变量,修改根文件系统下/etc/profile,添加:
QTDIR =/usr/local/Trolltech/QtEmbedded-4.7.3-arm
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export POINTERCAL_FILE=/etc/pointercal
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
OK,