QT交叉编译与移植

QT交叉编译与移植

 

ruihanL@126.com

 

在ARM上开发运行QT有两种方法,一种是移植Qtopia,一种是移植Qte。Qtopia实际上是QT2.0,现在比较老了,一般使用最新的Qte开发。

 

1.交叉编译目标

通过交叉编译QT源代码,得到一套开发的库,复制库到开发板上,这样在PC上编译好的文件就可以复制到开发板上运行。在PC上主要是要获得qmake和库,在开发板上需要的是库。

 

2.交叉编译步骤

2.1.编译环境

编译QT的PC版本需要JPEG等库的支持,编译ARM版本的需要触摸控制库的支持,因此必须事先安装好各种库。PC上推荐使用深度Linux进行编译开发。

 

2.2.编译触摸库

tar xvzf tslib-1.4.tar.gz

cd tslib-1.4.1

mkdir _install

./autogen.sh

echo "ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache

./configure--prefix=./_install/ --host=arm-linux av_cv_func_malloc_0_nonnull=yes--cache-file=arm-linux.cache

make

makeinstall

在这个配置中./_install/就是我们指定的安装路径,也就是执行make install后,tslib就被安装到这个目录了。

通过上述操作,就可以在./_install目录下看到相关的应用程序、共享库、配置文件等,这些库和配置文件都是要拷到ARM板的根文件系统中的。

修改/ etc/ts.conf,去掉module_rawinput的注释符,文字顶格。

 

2.3.编译源代码

 

./configure -prefix ./_install/ -shared-no-fast -no-largefile -no-exceptions -qt-sql-sqlite -qt3support-no-xmlpatterns -multimedia -no-svg -no-mmx -no-3dnow -no-sse -no-sse2 -qt-zlib-qt-libtiff -qt-libpng -qt-libjpeg -make libs -nomake examples -nomake docs-nomake demo -no-optimized-qmake -no-nis -no-cups -no-iconv -no-dbus-no-separate-debug-info -no-openssl -xplatform qws/linux-arm-g++ -embedded arm-little-endian -opensource -confirm-license -no-freetype -depths 4,8,16,32 -qt-gfx-linuxfb-no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-tty-no-glib -armfpa -no-mouse-qvfb -qt-mouse-pc -qt-mouse-tslib-I/opt/EmbedSky/qt483/tslib-1.4.1/_install/include-L/opt/EmbedSky/qt483/tslib-1.4.1/_install/lib

make

make install

 

配置的时候注意引入触摸库,还有安装路径。

 

2.4.复制字体和库

将编译之后的include、lib(*.so、frons文件夹的*.qpf)、plugins(imageformats)复制到开发板上,在开发板的配置文件上写明QTDIR等变量的路径。

 

 

3. configure配置选项

运行configure -h,可以看到

This is the Qt for Embedded Linux OpenSource Edition.

 

Usage: configure [-prefix <dir>] [-prefix-install] [-bindir <dir>][-libdir <dir>]

       [-docdir <dir>] [-headerdir <dir>] [-plugindir <dir> ][-datadir <dir>]

       [-translationdir <dir>] [-sysconfdir <dir>] [-examplesdir<dir>]

       [-demosdir <dir>] [-buildkey <key>] [-release] [-debug]

       [-debug-and-release] [-shared] [-static] [-no-fast] [-fast][-no-largefile]

       [-largefile] [-no-exceptions] [-exceptions] [-no-accessibility]

       [-accessibility] [-no-stl] [-stl] [-no-sql-<driver>][-sql-<driver>]

       [-plugin-sql-<driver>] [-system-sqlite] [-no-qt3support][-qt3support]

       [-platform] [-D <string>] [-I <string>] [-L <string>][-help]

       [-qt-zlib] [-system-zlib] [-no-gif] [-qt-gif] [-no-libtiff][-system-libtiff]

       [-no-libpng] [-qt-libpng] [-system-libpng] [-no-libmng] [-qt-libmng]

       [-system-libmng] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make<part>]

       [-no-make <part>] [-R <string>]  [-l <string>] [-no-rpath]  [-rpath] [-continue]

       [-verbose] [-v] [-silent] [-no-nis] [-nis] [-no-cups] [-cups][-no-iconv]

       [-iconv] [-no-pch] [-pch] [-no-dbus] [-dbus] [-dbus-linked]

       [-no-separate-debug-info] [-no-mmx] [-no-3dnow] [-no-sse] [-no-sse2]

       [-qtnamespace <namespace>] [-separate-debug-info] [-armfpa]

       [-no-optimized-qmake] [-optimized-qmake] [-no-xmlpatterns][-xmlpatterns]

       [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend]

       [-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit]

       [-no-scripttools] [-scripttools]

 

       [additional platform specific options (see below)]

具体选项的含义见文档。

 

 

 

 

 

 

QT交叉编译与移植

上一篇:LeetCode之Reverse Linked List II


下一篇:Mule ESB-Content-Based Routing Tutorial(3)