ubuntu下QT环境搭建

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在ubuntu下搭建QT环境,之前我已经装好了arm-linux-gcc3.4.1交叉编译环境
在终端输入
arm 再按两下tab建,看是不是有以下
arm2hpdl arm-linux-gcc arm-linux-objdump arm-linux-addr2line arm-linux-gcc-3.4.1 arm-linux-ranlib arm-linux-ar arm-linux-gccbug arm-linux-readelf arm-linux-as arm-linux-gcov arm-linux-size arm-linux-c++ arm-linux-gprof无arm-linux-strings
arm-linux-c++filt arm-linux-ld arm-linux-strip arm-linux-cpp arm-linux-nm
arm-linux-g++ arm-linux-objcopy
要准备的文件:
1.用于Linux/X11 32位的Qt Creator 1.3.1 二进制软件包qt-sdk-linux-x86-opensource-2010.04.bin 它是安装在虚拟机上做界面的软件QT creator。

2.用于嵌入式Linux 的Qt 库 4.6.2包qt-everywhere-opensource-src-4.6.
3.tar.gz
3.用于触摸屏校正的tslib-1.
4.tar.gz 注意解压之后文件夹名字为tslib不要改动。

4.用于编译的arm-linux-gcc-3.4.1.tar.bz2 这个我之前已经安装
好了。

1.
安装Qt-creator它是用于Linux/X11 32位的Qt Creator 1.3.1 二进制软件包qt-creator-linux-x86-opensource-1.3.1.bin
把下载的qt-sdk-linux-x86-opensource-2010.04.bin文件拷到一个目录(如前面的/root/tmp目录),进入目录:
设置qt-sdk-linux-x86-opensource-2010.04.bin文件为可执行
#chmod +x qt-sdk-linux-x86-opensource-2010.04.bin
安装:
# ./qt-sdk-linux-x86-opensource-2010.04.bin
启动安装界面,默认一路Next即可。

安装默认在目录/opt/qtsdk-2010.04下。

这个一路下来没有什么问题。

2.安装cross tool工具
我已经安装了arm-linux-gcc3.4.1交叉编译环境,对于 4.6.2包qt-everywhere-opensource-src-4.6.3.tar.gz已经够用,如果是4.7.0版本可能要重新安装arm-linux-gcc4.1.0版本(具体安装见guide2)。

3. 编译arm版:
先安装tslib解压到/home/fmm
下载tslib-1.4. 点击 tslib1.4
下进入tslib文件夹
./autogen.sh 生成配置文件
#./configure --prefix=/usr/local/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
make
make install
4.再安装qte-4.6.3-arm
将qt-everywhere-opensource-src-4.6.3.tar.gz放在home下
tar zxvf qt-everywhere-opensource-src-4.6.3.tar.gz
解压在该目录下(之后重新命名arm)。

这里我没有拷贝一份作为x86模拟,没有必要,pc机上界面做好不用在x86上编译看效果,直接在arm上编译之后下载到开发板上。

在qt-everywhere-opensource-src-4.6.3下修改文件夹下src/3rdparty/freetype/include/freetype/config/ftconfig.h,将第330行修改为:"orr %0, %0,%2, lsl #16\n\t" /* %0 |= %2 << 16 */
在/usr/local下建立qte-arm文件夹
cd qt-everywhere-opensource-src-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 -I/usr/local/tslib/include -L/usr/local/tslib/lib -D__ARM_ARCH_5TEJ__
红色部分主用于指定tslib编译文件,不然的话可能会找不到,导致tslib的功能无法实现而使编译无法正常进行
#gmake
出现错误<command line>:1: sorry, unimplemented: had to relocate PCH
<command line>:1: confused by earlier errors, bailing out gmake[1]: *** [.obj/release-shared-emb-arm/harfbuzz-gpos.o]
Error 1
gmake[1]: Leaving directory `/home/arm/src/corelib' gmake: *** [sub-corelib-make_default-ordered] Error 2
解决:
./configure -prefix /usr/local/qte-arm-debug-and-release -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -make libs -nomake examples -nomake demos -nomake docs -no-cups -iconv -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 8,16,24,32 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -no-dbus -qt-sql-sqlite -qt-kbd-qvfb -qt-kbd-tty -qt-mouse-tslib -no-glib -I/usr/local/tslib/include -L/usr/local/tslib/lib -D__ARM_ARCH_5TEJ__ 注意红色部分。

再试一次
千万不要自己改文件夹。

红色部分的文件夹。

路径也都安装给出的路径不要修改,以免出错。

#gamke install
安装成功。

安装完后在QT creator我自己做了一个hello world界面,在终端输入:
qmake –project
qmake test.pro
make
下到板子后,在终端运动./test –qws
其中会出现错误
/usr/local/qte-arm/lib/libQtGui.so: undefined reference to `ts_config'
/usr/local/qte-arm/lib/libQtGui.so: undefined reference to `ts_read'
/usr/local/ qte-arm /lib/libQtGui.so: undefined reference to `ts_read_raw'
/usr/local/ qte-arm /lib/libQtGui.so: undefined reference to `ts_open'
/usr/local/ qte-arm /lib/libQtGui.so: undefined reference to `ts_fd' collect2: ld returned 1 exit status
make: *** [test1] Error 1
解决办法:
修改/usr/local/qte-arm/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):
QMAKE_CC = arm-linux-gcc –lts
QMAKE_CXX = arm-linux-g++ –lts
QMAKE_LINK = arm-linux-g++ –lts
QMAKE_LINK_SHLIB = arm-linux-g++ –lts
5. 接下来的工作就是移植了,可以把库放在文件系统下,在重新下载文件系统到开发板上,也可以运用nfs通过网络mount到板子上的
文件夹下。

不过由于原先板子上有文件系统,存不了这么大,就自己做一个文件系统:
先把文件系统utu2440-qtopia-1.7-touchscreen.tar.gz 解压至目录:/home/fmm/files-yaffs下,将Fedora12上/usr/local/qte-arm/lib 中的所有文件复制到/home/fmm/files-yaffs/usr/local/qte-arm/lib目录中(对应目录复制,相当于复制到了开发板对应目录中,usr/local/qte-arm为自己建的文件夹),其实需要的时候可以裁剪,我就留下了3个库,GUI,CORE,NETWORK.不过在复制时最好将整个lib 文件打包复制到对应目录下再解压,要不会破坏此文件夹下文件的联系。

将Fedora12上/usr/local/tslib 中的所有文件复制到/home/fmm/files-yaffs/usr/local中。

也要打包复制。

如果运行时还缺少其他的库,复制方法相同。

也可以使用arm-angstrom-linux-gnueabi-readelf -a 程序名| grep "Share",命令查看需要哪些共享库,一起复制过去。

为支持触摸屏,开机自动设置环境变量,在/home/fmm/files-yaffs /etc/profile中追加:
export LD_LIBRARY_PATH=/usr/local/lib:$QTDIR/lib:$LD_LIBRARY_PATH export TSLIB_ROOT=/usr/local/lib
export TSLIB_TSDEVICE=/dev/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/event0
export QT_QWS_FONTDIR=/usr/local/qte-arm/lib/fonts
取消/usr/local/etc/ts.conf中的第一个注释:
# module_raw input (去掉#,并且该行顶格)
文件系统基本弄的差不多了,这时就可以制作文件系统镜像了,把光盘里面的mkyaffsimage文件拷贝到/home/fmm所在目录,并用chmod 777 mkyaffsimage 命令修改权限。

运行命令:
./mkyaffsimage yaffs-files filesysytem.yaffs 一定要用这名字
回车以后,少等片刻,一个yaffs的映像文件filesystem.yaffs在当前目录下生成了。

用NFS将文件系统下到板子上,在重启进入系统
启动2440开发板运行/usr/local/bin/ts_calibrate 校正触摸屏。

注意:
运行./ts_calibrate提示:ts_open:ts_open no such file or directory
运行./ts_test提示:dev/touchscreen/ucb1x00:no such file or directory 解决办法:修改/home/fmm/files-yaffs /etc/profile
export QWS_MOUSE_PROTO=Tslib:/dev/event0 不是/dev/input/event0 export TSLIB_TSDEVICE=/dev/event0不是/dev/input/event0
在触摸屏上点击5个指定坐标即可使用触摸屏了。

6、Qt-creator开发环境的配置
启动Qt-creator。

在Qt-creator菜单栏Tools—〉Options…打开Options窗口。

在Options界面左侧,点击Qt4—〉Qt Versions右侧显示Qt Versions 设置界面。

在Qt Versions界面中点击那个蓝色的大“╋”号图标
在下方Version Name:文本框内输入Qt的版本名,可以随便填,能区分各个版本即可arm版取QtE4.6.3-arm)。

单击Qmake Location:右侧Browse…按钮,在弹出的“Select QMake Executable”窗口中找到对应版本的qmake程序(按照我们前面安转的,arm版路径:/usr/local/qte-arm/bin/qmake),单击打开,回到Qt Versions界面。

回到Qt Versions界面,单击Debugging Helper:右侧Rebuild按钮,
等待片刻,看到Debugging Helper:后出现一个绿色的“√”即可。

(这里可能会出错)
同理完成其他版本的添加。

添加完毕,单击OK按钮关闭Options窗口。

到此,Qt-creator配置完毕(我暂时就配置了这些)。

错误类型:
Building debugging helper library in /usr/local/qte-arm/qtc-debugging-helper/
Running /usr/bin/make distclean...
rm -f gdbmacros.o
rm -f *~ core *.core
rm -f libgdbmacros.so.1.0.0
rm -f libgdbmacros.so libgdbmacros.so.1 libgdbmacros.so.1.0 libgdbmacros.a
rm -f Makefile
Running /usr/local/qte-arm/bin/qmake ...
Cannot find file: .
Running /usr/bin/make ...
arm-linux-g++ -c -pipe -g -Wall -W -D_REENTRANT -fPIC -DUSE_QT_GUI=1 -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../mkspecs/qws/linux-arm-g++ -I. -I../include/QtCore -I../include/QtGui -I../include -I. -o gdbmacros.o gdbmacros.cpp
make: arm-linux-g++: Command not found
make: *** [gdbmacros.o] Error 127
qte4.6.3编译
解决办法
修改/usr/local/qte-arm/mkspecs/qws/linux-arm-g++/qmake.conf 文件(添加lts参数):
QMAKE_CC = arm-linux-gcc –lts
QMAKE_CXX = arm-linux-g++ –lts
QMAKE_LINK = arm-linux-g++ –lts
QMAKE_LINK_SHLIB = arm-linux-g++ –lts
LD_LIBRARY_PATH配置:
/usr/local/tslib/lib:/usr/local/qte-arm/lib:/opt/qtsdk-2010.04/lib:/opt/qt
sdk-2010.04/lib/qtcreator:
PATH配置:
/usr/local/qte-arm/bin:/usr/local/tslib/bin:/opt/qtsdk-2010.04/bin:/usr/l ocal/arm/3.4.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: /bin:/usr/games
7.arm程序编译及移植
编译:在Projects设置界面下,选择Using Qt Version “QtE4.6.3-arm”项,余下参数不变,build。

复制编译好的二进制文件(也许还有images文件夹)到2440的NFS 文件系统的某个目录下,
这样在终端打入命令:
#./test -qws。

相关文档
最新文档