QT安装全过程是本文要介绍的内容,主要是来了解并学习QT的应用,本文主要是来学习QT安装过程,具体内容的实现来看本文详解。
一、qt的源码编译
1、编译触摸屏软件tslib
解压tslib-1.4.tar.gz
- Tar-zxvftslib-1.4.tar.gz-C/usr/local
- cdtslib
- apt-getinstalllibtool
- apt-getinstallautoconf
- apt-getinstallg++
在tslib目录下
- ./autogen.sh
- CC=arm-linux-gcc
- ####echo"ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache//###表示注释掉了,第三句是前两句的结合
- ####./configure--prefix=/opt/ts/--host=arm-linux--cache-file=arm-linux.cache
- ./configure--prefix=/opt/ts/--host=arm-linuxac_cv_func_malloc_0_nonnull=yes
打开tests/ts_calibrate.c,修改两个open,加上第三个参数0//atline227229
- make
- makeinstall
2、安装qt--X11
- apt-getinstalllibX11-devlibXext-devlibXtst-dev
- apt-getinstallxorg-dev
解压tarzxvfqt-everywhere-opensource-src-4.6.3.tar.gz-C/usr/local/
- mvqt-everywhere-opensource-src-4.6.3qt-everywhere-opensource-src-4.6.3-x11
- ./configure-nomakeexamples-nomakedemos
- make&&makeinstall
该过程会出现让你选择commercial或者open版本==》输入o
然后询问是否接受license==》输入yes
- make&&makeinstall
//三个小时左右,该干嘛干嘛去
3、安装qt--x86
- #tarxzvfqt-everywhere-opensource-src-4.6.3.tar.gz-C/usr/local
- #mvqt-everywhere-opensource-src-4.6.3qt-everywhere-opensource-src-4.6.3-x86
- #cdqt-everywhere-opensource-src-4.6.3-x86
- #./configure-prefix/usr/local/Trolltech/Qt-4.6.3-x86-nomakeexamples-nomakedemos
- -nomakedocs-nomaketools-embeddedx86-qvfb
- #make&&makeinstall
4、安装qt--arm
- ./configure-prefix/usr/local/Trolltech/Qt-4.6.3-arm-release-shared-fast-xplatformqws/linux
- -arm-g++-embeddedarm-depths16-no-qvfb-no-qt3support-qt-sql-sqlite-qt
- -zlib-qt-libpng-qt-freetype-qt-mouse-tslib-no-mouse-pc-no-mouse-linuxtp
- -nomakeexamples-nomakedemos-nomakedocs-nomaketools-I/opt/ts/include-L/opt/ts/lib
有错,使用下面的
- ./configure\
- -prefix/usr/local/Trolltech/Qt-4.6.3-arm\
- -release-shared-fast\
- -xplatformqws/linux-arm-g++-embeddedarm\
- -depths16-no-qvfb\
- -no-qt3support-qt-sql-sqlite-qt-zlib-qt-libpng-qt-freetype\
- -qt-mouse-tslib-no-mouse-pc-no-mouse-linuxtp\
- -nomakeexamples-nomakedemos-nomakedocs-nomaketools\
- -I/opt/ts/include-L/opt/ts/lib
执行完configure命令之后,还需要修改三个文件:
- cdqt-embeded-opensource-src-4.6.3-arm
1)该目录下/src/3rdparty/freetype/include/freetype/config/ftconfig.h330行
- "orr%0,%0,%2,lsl#16\n\t"/*%0|=%2<<16*/
- //原来:"orr%0,%2,lsl#16\n\t"
2)/src/3rdparty/webkit/WebCore/Makefile
14行和15行,分别在-fPIC$(DEFINES)之前加入-D__ARM_ARCH_4T__(即CFLAGS/CXXFLAGS)
3) /src/script/Makefile
14行和15行-D__ARM_ARCH_4T__(同上)
- make&&makeinstall
二、环境搭建(Trolltech)
1、设置环境变量Qt-4.6.3
进入/usr/local/Trolltech/Qt-4.6.3目录
visetenv.sh或者sudogeditsetenv.sh
在文件中加入
- PATH=/usr/local/Trolltech/Qt-4.6.3/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3/lib:$LD_LIBRARY_PATH
保存退出
- chmod777setenv.sh
2、设置环境变量Qt-4.6.3-x86
进入/usr/local/Trolltech/Qt-4.6.3-x86目录
visetenv.sh或者sudogeditsetenv.sh
在文件中加入
- QTEDIR=/usr/local/Trolltech/Qt-4.6.3-x86
- PATH=/usr/local/Trolltech/Qt-4.6.3-x86/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3-x86/lib:$LD_LIBRARY_PATH
保存退出
- chmod777setenv.sh
3、设置环境变量Qt-4.6.3-arm
进入/usr/local/Trolltech/Qt-4.6.3-arm目录
visetenv.sh或者sudogeditsetenv.sh
在文件中加入
- QTEDIR=/usr/local/Trolltech/Qt-4.6.3-arm
- PATH=/usr/local/Trolltech/Qt-4.6.3-arm/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3-arm/lib:$LD_LIBRARY_PATH
保存退出
- chmod777setenv.sh
三、编译qvfb
- cdqt-everywhere-opensource-4.6.3-x11/tools/qvfb
- #####/usr/local/qt-everywhere-opensource-src-4.6.3-x11/tools/qvfb
- make
--会在qt-everywhere-opensource-4.6.3-x11/bin下生成qvfb,
我们将它copy至/usr/local/Trolltech/Qt-4.6.3-x86/bin下
- cpqvfb/usr/local/Trolltech/Qt-4.6.3-x86/bin
运行测试()
运行x86下setenv.sh脚本文件。sourcesetenv.sh(word里大写S不对)命令行输入qvfb&(&后台运行)
对Qtcreator工程文件qmake文件名.pro然后make生成可执行文件
- ./可执行文件-qws
- (示例文件可以去qt-everywhere-opensource-4.6.3-x86/examples或者demos里面找)
四、安装QTCreator
- chmod777qt-sdk-linux-x86-opensource_2010.02.bin
- cpqt-sdk-linux-x86-opensource_2010.02.bin/opt
- ./qt-sdk-linux-x86-opensource_2010.02.bin默认安装即可
六、在ubuntu中安装NFS服务,在开发内核和文件系统时很方便,可以直接采用NFS启动内核和文件系统。安装如下:
1、安装
#apt-getinstallnfs-kernel-server
2、将NFS端口是否打开
- #netstat-tl
若NFS端口处于LISTEN状态,则打开
3、配置NFS服务器
- #vim/etc/exports
在***一行加入:/work*(rw,sync,no_root_squash)其中:/work为共享目录,*为任意IP地址都可以访问,no_root_squash表示任意用户都可以访问
4、重启NFS服务
- #/etc/init.d/nfs-kernel-serverrestart
5、查看NFS服务器当前的工作状态
#/etc/init.d/nfs-kernel-serverstatus
若显示running则工作正常
安装结束
#p#
五、ARM板上配置环境:(板子和电脑之间)
编辑目标环境下(/utulinux2.6.24/s3c2440_recover/etc)的/etc/profile,在文件后面添加如下内容:(和ppt上的有少许区别,主要是路径上)
- exportLD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
- exportQTDIR=/usr/local/Trolltech/Qt-4.6.3-arm
- exportQPEDIR=$QTDIR
- exportT_ROOT=/opt/ts
- exportPATH=$T_ROOT/bin:$PATH
- exportLD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
- exportTSLIB_CONSOLEDEVICE=none
- exportTSLIB_FBDEVICE=/dev/fb0
- exportTSLIB_TSDEVICE=/dev/event0
- exportTSLIB_PLUGINDIR=$T_ROOT/lib/ts
- exportTSLIB_CONFFILE=$T_ROOT/etc/ts.conf
- exportTSLIB_CALIBFILE=/etc/pointercal
- exportQWS_KEYBOARD=USB:/dev/input/event1
- exportQWS_MOUSE_PROTO=Tslib:/dev/event0
- exportQWS_DISPLAY=LinuxFb:mmWidth45:mmHeight60:0
- exportQWS_SIZE=320x240
六.在目标环境中建立与编译QT-arm一样的路径:(目标路径/utulinux2.6.24/s3c2440_recover)
- mkdir/usr/local/Trolltech/Qt-4.6.3-arm
- cd/usr/local/Trolltech/Qt-4.6.3-arm
- mkdirlib/
- mkdirlib/fonts/
把以下的库文件从编译主机中的lib复制目录中的四个库文件复制到目标板的/usr/local/Qt-4.6.3-arm/lib
- libQtCore.so.4.6.3
- libQtGui.so.4.6.3
- libQtNetwork.so.4.6.3
- libQtSql.so.4.6.3
为每个库文件创建3个连接:*.so,*.so.4,*.so.4.6
- ln–slibQtCore.so.4.6.3libQtCore.so
- ln–slibQtCore.so.4.6.3libQtCore.so.4
- ln–slibQtCore.so.4.6.3libQtCore.so.4.6
(重复其余三个)
常用字库文件从/usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts/复制到目标板的
- /utulinux2.6.24/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts
- cp-rf/usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts/\/utulinux2.6.24/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib
七、
1:将/opt下交叉编译好的tslib文件cp到开发板中对应的同样目录下,其中的include目录和lib下的pkgconfig目录可以不拷贝。
进入到/opt复制ts目录
cp-rfts/utulinux2.6.24/s3c2440_recover/opt/
2:检查/utulinux2.6.24/s3c2440_recover/opt/
ts/etc/ts.conf内容加入module_rawinput:
module_rawinput(必须顶格,不然bug)
- modulepthrespmin=1
- modulevariancedelta=30
- moduledejitterdelta=100
- modulelinear
八.cd/usr/local/Trolltech/Qt-4.6.3-arm/mkspecs/default
//这个问题找了好久,结果发现是这里目录错了,应该是
cd/usr/local/Trolltech/Qt-4.6.3-arm/mkspecs/qws/linux-arm-g++
不然后面qmake时会出错
修改qmake配置文件:
viqmake.conf打开文件中在QMAKE_LINK_SHLIB此行下面加入一行:
QMAKE_LFLAGS+=-Wl-lts加入后如下:
- #modificationstog++.conf
- QMAKE_CC=arm-linux-gcc
- QMAKE_CXX=arm-linux-g++
- QMAKE_LINK=arm-linux-g++
- QMAKE_LINK_SHLIB=arm-linux-g++
- QMAKE_LFLAGS+=-Wl-lts
- #modificationstolinux.conf
- QMAKE_AR=arm-linux-arcqs
- QMAKE_OBJCOPY=arm-linux-objcopy
- QMAKE_STRIP=arm-linux-strip
- load(qt_config)
九.将例子hellowrld拷贝到/utulinux2.6.24/s3c2440_recover/usr下测试
在串口终端进入文件夹中./helloworld-qws
//这里讲得不清楚,是这样的,因为要在arm板上运行,所以要用Qt-4.6.3-arm中对应的qmake编译
先要执行该文件中的setenv.sh
- source/usr/local/Trolltech/Qt-4.6.3-arm/setenv.sh
执行后环境变量就在本终端中有效,不要切换终端qmake
然后找到要编译的项目qmakename.pro
- make
生成和项目名一样的可执行文件,该文件可以在arm板上执行
CRT中输入./name-qws即可
十.错误解决方法:
提示:.
- /helloworld:errorwhileloadingsharedlibraries:libts-0.0.so.0:cannotopen
- sharedobjectfile:Nosuchfileordirectory
Ts触摸屏驱动有问题,解决方法看路径是否对。
//这里说的路径主要是说/utulinux2.6.24/s3c2440_recover/etc/profile中T_ROOT=/opt/ts设置是否正确
错误:
- ./helloworld:errorwhileloadingsharedlibraries:libstdc++.so.6:cannotopen
- sharedobjectfile:Nosuchfileordirectory
对应文件拷贝链接:
进入目标系统lib目录下://这种类似的报错可以到ubuntu中把Qt-4.6.3-arm/lib下的文件拷贝过来,软连接的话自己建
- ln-slibstdc++.so.60.0.3libstdc++.so.6
错误:
- CannotcreateQtforEmbeddedLinuxdatadirectory:/tmp/qtembedded-0Aborted
在目标板根目录下创建文件夹:
mkdirtmp
十一.重启nfs服务://这里不一定需要
- /etc/init.d/nfs-kernel-serverrestart
重启板子reboot
校准:(遇到错误提示如下)
- Couldnotreadcalibration:"/etc/pointercal"
超级终端命令行输入:ts_calibrate运行
在触摸屏上点击鼠标跟踪。
重新再运行helloworld
十二、想要板子开机运行程序要挂载电脑端的utulinux目录
首先启动utubootloader运行:setenvbootargs
saveenv启动后运行:
- mount-tnfs192.168.1.200:/utulinux2.6.24/s3c2440_recover/media/nfs
(挂载不了重启板子reboot)
小结:详解QT安装全过程的内容介绍完了,希望通过本文的QT安装的内容学习能对你有所帮助!