搜索
您的当前位置:首页正文

Qt4.7移植

2021-11-19 来源:易榕旅网


1. 移植tslib1.4.1

1. 编译安装 ./autogen.sh

./configure --host=arm-linux -disable-hp3600 --disable-arctic2 --disable-mk712 --disable-collie --disable-corgi --disable-ucb1x00 --disable-linear-h2200 --with-gnu-ld --prefix=/home/lengyuegg/tool/tslib ac_cv_func_malloc_0_nonnull=yes make

make install

2.修改tslib文件

/home/lengyuegg/tool/tslib/etc/ts.conf 去掉下面一行前的注释 module_raw input

3.下载到开发板

把第一步生成的tslib整个文件下载到开发板 随便放到开发板的某个目录下 比如放到/home/lengyuegg/tslib 4.验证

cd /home/lengyuegg/tslib/bin ./ts_calibrate

2. 移植Qt4.7.3

1.安装arm-linux-gcc

tar zxvf arm-linux-gcc-4.3.2.tgz

把目录下的bin所在的路径加到环境变量里 2.编译安装Qt

./configure -embedded arm -release -opensource -silent -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -make demos -qt-kbd-linuxinput -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-qt3support -no-nis -no-cups -no-iconv -no-dbus -no-openssl -fast -no-accessibility -no-scripttools -no-mmx -no-multimedia -svg -no-webkit -no-3dnow -no-sse -no-sse2 -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -no-glib -prefix /home/lengyuegg/Qt/Qt4.7.3 -qt-mouse-tslib -I /home/lengyuegg/tool/tslib/include -L /home/lengyuegg/tool/tslib/lib

Type '3' to view the GNU General Public License version 3.

Type 'L' to view the Lesser GNU General Public License version 2.1. Type 'yes' to accept this license offer. Type 'no' to decline this license offer. yes

生成Makefile make (2个小时) make install 3.字体设置

复制wqy-zenhei.ttc到/home/lengyuegg/Qt/Qt4.7.3/lib/fonts目录下,这样中文就可显示正常了。

4.下载到开发板

把第一步生成的Qt4.7.3整个文件下载到开发板

路径应与第二布设置的路径(-prefix /home/lengyuegg/Qt/Qt4.7.3)一致 5.设置环境变量 /etc/profile

export TSLIB_ROOT=/home/lengyuegg/tslib

export TSLIB_TSDEVICE=/dev/input/event0 #触摸屏设备节点 export TSLIB_CALIBFILE=/etc/pointercal #生成的校验文件存放目录 export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #触摸屏配置文件

export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts #触摸屏在进行AD转换时用到的插件 #export TSLIB_CONSOLEDEVICE=none

#export TSLIB_FBDEVICE=/dev/fb0 #触摸屏framebuff设备节点

export QTDIR=/home/lengyuegg/Qt/Qt4.7.3

export LD_LIBRARY_PATH=$QTDIR/lib:/usr/local/lib:$LD_LIBRARY_PATH export PATH=$QTDIR/bin:/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin:$PATH

#export QWS_DISPLAY=:1

export QWS_DISPLAY=\"LinuxFb:mmWidth100:mmHeight130:0\"

TS_INFO_FILE=/sys/devices/virtual/input/input0/uevent

if [ -e $TS_INFO_FILE -a \"/bin/grep -q TouchScreen < $TS_INFO_FILE\" ]; then export QWS_MOUSE_PROTO=\"Tslib:/dev/input/event0 MouseMan:/dev/input/mice\"

if [ ! -s /etc/pointercal ] ; then rm /etc/pointercal

/usr/local/bin/ts_calibrate fi else

export QWS_MOUSE_PROTO=\"MouseMan:/dev/input/mice\" fi

unset TS_INFO_FILE

export QWS_KEYBOARD=TTY:/dev/tty1

3. 用Qt Creator编写程序下载到开发板运行

运行 PC机

生成开发板运行程序

/home/lengyuegg/Qt/Qt4.7.3/bin/qmake 就是前面Qt编译安装的路径

下载程序到开发板运行

cd /home/lengyuegg/Qt/mypro/helloworld-cqy-build-desktop

IP:192.168.1.230 用户名:plg 密码:plg

在开发板的/home/plg目录下 Chmod +x helloworld-cqy ./ helloworld-cqy –qws

4. Qt配置参数 ./configure –help

有的参数前面有*号,这就意味这如果我们什么也不做,直接配置编译的话,就会把这些参数默认进去

如果是-no-XX-,就说明编译时不选择这个参数,如过是-qt-XX-,说明我们可以编译直接选用qt自带的驱动,如果是-plugin-XX-,就是将驱动以插件形式编译,而-system-XXX,当然是使用操作系统提供的驱动,不过那就需要您自己移植了,而且有时还要用第三方的API

./configure --help

Usage: configure [-h] [-prefix

] [-prefix-install] [-bindir ] [-libdir ]

[-docdir

] [-headerdir ] [-plugindir ] [-importdir ] [-datadir ] [-translationdir ] [-sysconfdir ] [-examplesdir ] [-demosdir ] [-buildkey ] [-release] [-debug]

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

[-largefile] [-no-exceptions] [-exceptions] [-no-accessibility] [-accessibility] [-no-stl] [-stl] [-no-sql-] [-sql-]

[-plugin-sql-] [-system-sqlite] [-no-qt3support] [-qt3support] [-platform] [-D ] [-I ] [-L ] [-help]

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

[-system-libmng] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make ] [-nomake ] [-R ] [-l ] [-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-gui] [-no-separate-debug-info] [-no-mmx] [-no-3dnow] [-no-sse] [-no-sse2] [-no-sse3] [-no-ssse3] [-no-sse4.1] [-no-sse4.2] [-no-avx] [-no-neon]

[-qtnamespace ] [-qtlibinfix ] [-separate-debug-info] [-armfpa]

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

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

[-no-media-backend] [-media-backend] [-no-audio-backend] [-audio-backend] [-no-openssl] [-openssl] [-openssl-linked]

[-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] [-webkit-debug] [-no-javascript-jit] [-javascript-jit]

[-no-script] [-script] [-no-scripttools] [-scripttools] [-no-declarative] [-declarative][-no-declarative-debug] [-declarative-debug] [additional platform specific options (see below)]

Installation options:

These are optional, but you may specify install directories.

-prefix

...... This will install everything relative to (default /usr/local/Trolltech/Qt-4.7.3)

* -prefix-install .... Force a sandboxed \"local\" installation of Qt. This will install into

/usr/local/Trolltech/Qt-4.7.3, if this option is disabled then some platforms will attempt a \"system\" install by placing default values to be placed in a system location other than PREFIX.

You may use these to separate different parts of the install:

-bindir

......... Executables will be installed to (default PREFIX/bin) -libdir ......... Libraries will be installed to (default PREFIX/lib)

-docdir

......... Documentation will be installed to (default PREFIX/doc) -headerdir ...... Headers will be installed to (default PREFIX/include) -plugindir ...... Plugins will be installed to (default PREFIX/plugins)

-importdir

...... Imports for QML will be installed to (default PREFIX/imports)

-datadir

........ Data used by Qt programs will be installed to (default PREFIX)

-translationdir

. Translations of Qt programs will be installed to

(default PREFIX/translations)

-sysconfdir

..... Settings used by Qt programs will be looked for in (default PREFIX/etc/settings) -examplesdir .... Examples will be installed to (default PREFIX/examples) -demosdir ....... Demos will be installed to (default PREFIX/demos)

You may use these options to turn on strict plugin loading.

-buildkey .... Build the Qt library and plugins using the specified

. When the library loads plugins, it will only load those that have a matching key.

Configure options:

The defaults (*) are usually acceptable. A plus (+) denotes a default value that needs to be evaluated. If the evaluation succeeds, the feature is included. Here is a short explanation of each option:

* -release ........... Compile and link Qt with debugging turned off. -debug ............. Compile and link Qt with debugging turned on.

-debug-and-release . Compile and link two versions of Qt, with and without debugging turned on (Mac only).

-developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting)

-opensource ........ Compile and link the Open-Source Edition of Qt. -commercial ........ Compile and link the Commercial Edition of Qt.

* -shared ............ Create and use shared Qt libraries. -static ............ Create and use static Qt libraries.

* -no-fast ........... Configure Qt normally by generating Makefiles for all project files.

-fast .............. Configure Qt quickly by generating Makefiles only for

library and subdirectory targets. All other Makefiles are created as wrappers, which will in turn run qmake.

-no-largefile ...... Disables large file support.

+ -largefile ......... Enables Qt to access files larger than 4 GB.

-no-exceptions ..... Disable exceptions on compilers that support it. * -exceptions ........ Enable exceptions on compilers that support it.

-no-accessibility .. Do not compile Accessibility support. * -accessibility ..... Compile Accessibility support.

-no-stl ............ Do not compile STL support. * -stl ............... Compile STL support.

-no-sql- ... Disable SQL entirely.

-qt-sql- ... Enable a SQL in the QtSql library, by default none are turned on.

-plugin-sql- Enable SQL as a plugin to be linked to at run time.

Possible values for :

[ db2 ibase mysql oci odbc psql sqlite sqlite2 sqlite_symbian tds ]

-system-sqlite ..... Use sqlite from the operating system.

-no-qt3support ..... Disables the Qt 3 support functionality. * -qt3support ........ Enables the Qt 3 support functionality.

-no-xmlpatterns .... Do not build the QtXmlPatterns module. + -xmlpatterns ....... Build the QtXmlPatterns module.

QtXmlPatterns is built if a decent C++ compiler is used and exceptions are enabled.

-no-multimedia ..... Do not build the QtMultimedia module. + -multimedia ........ Build the QtMultimedia module.

-no-audio-backend .. Do not build the platform audio backend into QtMultimedia. + -audio-backend ..... Build the platform audio backend into QtMultimedia if available.

-no-phonon ......... Do not build the Phonon module. + -phonon ............ Build the Phonon module.

Phonon is built if a decent C++ compiler is used. -no-phonon-backend.. Do not build the platform phonon plugin. + -phonon-backend..... Build the platform phonon plugin.

-no-svg ............ Do not build the SVG module. + -svg ............... Build the SVG module.

-no-webkit ......... Do not build the WebKit module.

+ -webkit ............ Build the WebKit module.

WebKit is built if a decent C++ compiler is used. -webkit-debug ...... Build the WebKit module with debug symbols.

-no-javascript-jit . Do not build the JavaScriptCore JIT compiler. + -javascript-jit .... Build the JavaScriptCore JIT compiler.

-no-script ......... Do not build the QtScript module. + -script ............ Build the QtScript module.

-no-scripttools .... Do not build the QtScriptTools module. + -scripttools ....... Build the QtScriptTools module.

-no-declarative ..... Do not build the declarative module. + -declarative ....... Build the declarative module.

-no-declarative-debug ..... Do not build the declarative debugging support. + -declarative-debug ....... Build the declarative debugging support.

-platform target ... The operating system and compiler you are building on (linux-g++).

See the README file for a list of supported operating systems and compilers.

-graphicssystem Sets an alternate graphics system. Available options are: raster - Software rasterizer

opengl - Rendering via OpenGL, Experimental! openvg - Rendering via OpenVG, Experimental!

-no-mmx ............ Do not compile with use of MMX instructions. -no-3dnow .......... Do not compile with use of 3DNOW instructions. -no-sse ............ Do not compile with use of SSE instructions. -no-sse2 ........... Do not compile with use of SSE2 instructions. -no-sse3 ........... Do not compile with use of SSE3 instructions. -no-ssse3 .......... Do not compile with use of SSSE3 instructions. -no-sse4.1.......... Do not compile with use of SSE4.1 instructions. -no-sse4.2.......... Do not compile with use of SSE4.2 instructions. -no-avx ............ Do not compile with use of AVX instructions. -no-neon ........... Do not compile with use of NEON instructions.

-qtnamespace Wraps all Qt library code in 'namespace {...}'. -qtlibinfix Renames all libQt*.so to libQt*.so.

-D ........ Add an explicit define to the preprocessor. -I ........ Add an explicit include path. -L ........ Add an explicit library path.

-help, -h .......... Display this information.

Third Party Libraries:

-qt-zlib ........... Use the zlib bundled with Qt.

+ -system-zlib ....... Use zlib from the operating system. See http://www.gzip.org/zlib

-no-gif ............ Do not compile GIF reading support. * -qt-gif ............ Compile GIF reading support.

See also src/gui/image/qgifhandler_p.h

-no-libtiff ........ Do not compile TIFF support. -qt-libtiff ........ Use the libtiff bundled with Qt.

+ -system-libtiff .... Use libtiff from the operating system. See http://www.libtiff.org

-no-libpng ......... Do not compile PNG support. -qt-libpng ......... Use the libpng bundled with Qt.

+ -system-libpng ..... Use libpng from the operating system.

See http://www.libpng.org/pub/png

-no-libmng ......... Do not compile MNG support. -qt-libmng ......... Use the libmng bundled with Qt.

+ -system-libmng ..... Use libmng from the operating system. See http://www.libmng.com

-no-libjpeg ........ Do not compile JPEG support. -qt-libjpeg ........ Use the libjpeg bundled with Qt.

+ -system-libjpeg .... Use libjpeg from the operating system. See http://www.ijg.org

-no-openssl ........ Do not compile support for OpenSSL. + -openssl ........... Enable run-time OpenSSL support. -openssl-linked .... Enabled linked OpenSSL support.

-ptmalloc .......... Override the system memory allocator with ptmalloc. (Experimental.)

Additional options:

-make ....... Add part to the list of parts to be built at make time. (libs tools examples demos docs translations) -nomake ..... Exclude part from the list of parts to be built.

-R ........ Add an explicit runtime library path to the Qt libraries. -l ........ Add an explicit library.

-no-rpath .......... Do not use the library install path as a runtime library path.

+ -rpath ............. Link Qt libraries and executables using the library

install path as a runtime library path. Equivalent to -R install_libpath

-continue .......... Continue as far as possible if an error occurs.

-verbose, -v ....... Print verbose information about each step of the configure process.

-silent ............ Reduce the build output so that warnings and errors can be seen more easily.

* -no-optimized-qmake ... Do not build qmake optimized. -optimized-qmake ...... Build qmake optimized.

-no-gui ............ Don't build the Qt GUI library

-no-nis ............ Do not compile NIS support. * -nis ............... Compile NIS support.

-no-cups ........... Do not compile CUPS support. * -cups .............. Compile CUPS support.

Requires cups/cups.h and libcups.so.2.

-no-iconv .......... Do not compile support for iconv(3). * -iconv ............. Compile support for iconv(3).

-no-pch ............ Do not use precompiled header support. * -pch ............... Use precompiled header support.

-no-dbus ........... Do not compile the QtDBus module.

+ -dbus .............. Compile the QtDBus module and dynamically load libdbus-1. -dbus-linked ....... Compile the QtDBus module and link to libdbus-1.

-reduce-relocations ..... Reduce relocations in the libraries through extra

linker optimizations (Qt/X11 and Qt for Embedded Linux only;

experimental; needs GNU ld >= 2.18).

* -no-separate-debug-info . Do not store debug information in a separate file. -separate-debug-info .... Strip debug information into a separate .debug file.

Qt/X11 only:

-no-gtkstyle ....... Do not build the GTK theme integration. + -gtkstyle .......... Build the GTK theme integration.

* -no-nas-sound ...... Do not compile in NAS sound support.

-system-nas-sound .. Use NAS libaudio from the operating system. See http://radscan.com/nas.html

-egl ............... Use EGL instead of GLX to manage contexts.

When building for desktop OpenGL, this option will make Qt use EGL to manage contexts rather than the GLX, which is the default. Note: For OpenGL ES, EGL is always used.

-no-opengl ......... Do not support OpenGL. + -opengl ...... Enable OpenGL support.

With no parameter, this will auto-detect the \"best\" OpenGL API to use. If desktop OpenGL is available, it will be used. Use desktop, es1, or es2 for to force the use of the Desktop (OpenGL 1.x or 2.x), OpenGL ES 1.x Common profile, or 2.x APIs instead.

-no-openvg ........ Do not support OpenVG. + -openvg ........... Enable OpenVG support.

Requires EGL support, typically supplied by an OpenGL or other graphics implementation.

-no-sm ............. Do not support X Session Management.

* -sm ................ Support X Session Management, links in -lSM -lICE.

-no-xshape ......... Do not compile XShape support. * -xshape ............ Compile XShape support.

Requires X11/extensions/shape.h.

-no-xvideo ......... Do not compile XVideo support. * -xvideo ............ Compile XVideo support.

Requires X11/extensions/Xv.h & Xvlib.h.

-no-xsync .......... Do not compile XSync support. * -xsync ............. Compile XSync support.

Requires X11/extensions/sync.h.

-no-xinerama ....... Do not compile Xinerama (multihead) support. * -xinerama .......... Compile Xinerama support.

Requires X11/extensions/Xinerama.h and libXinerama. By default, Xinerama support will be compiled if

available and the shared libraries are dynamically loaded at runtime.

-no-xcursor ........ Do not compile Xcursor support. * -xcursor ........... Compile Xcursor support.

Requires X11/Xcursor/Xcursor.h and libXcursor. By default, Xcursor support will be compiled if

available and the shared libraries are dynamically loaded at runtime.

-no-xfixes ......... Do not compile Xfixes support. * -xfixes ............ Compile Xfixes support.

Requires X11/extensions/Xfixes.h and libXfixes. By default, Xfixes support will be compiled if

available and the shared libraries are dynamically loaded at runtime.

-no-xrandr ......... Do not compile Xrandr (resize and rotate) support. * -xrandr ............ Compile Xrandr support.

Requires X11/extensions/Xrandr.h and libXrandr.

-no-xrender ........ Do not compile Xrender support. * -xrender ........... Compile Xrender support.

Requires X11/extensions/Xrender.h and libXrender.

-no-mitshm ......... Do not compile MIT-SHM support. * -mitshm ............ Compile MIT-SHM support.

Requires sys/ipc.h, sys/shm.h and X11/extensions/XShm.h

-no-fontconfig ..... Do not compile FontConfig (anti-aliased font) support. * -fontconfig ........ Compile FontConfig support.

Requires fontconfig/fontconfig.h, libfontconfig, freetype.h and libfreetype.

-no-xinput ......... Do not compile Xinput support.

* -xinput ............ Compile Xinput support. This also enabled tablet support which requires IRIX with wacom.h and libXi or XFree86 with X11/extensions/XInput.h and libXi.

-no-xkb ............ Do not compile XKB (X KeyBoard extension) support. * -xkb ............... Compile XKB support.

-no-glib ........... Do not compile Glib support. + -glib .............. Compile Glib support.

-release

这个参数显而易见,就是编译Qt以发布版的模式进行,一般来说,最后系统完成后,库就应该是发布版。 -debug

与上面对应,自然是调试版了,如果开发的话,可以选择它吧。 -debug-and-release 囧,上面那两个的儿子。 -developer-build

囧,我错了,开发者也可以用这个的,选了这个后,可以进行自动测试,不过还没去用过,以后可以研究研究。 -opensource -commercial

这两个参数是指是编译是商业版本的,还是开源版本呢,视个人情况而定。 -shared -static

这两个参数是指Qt的lib以动态还是静态编译生成,这自然也是视个人需要的。 -no-fast -fast

这两个就很有关系,如果对自己的电脑性能很有信心,那就选第一个,那所有的工程文件都会生成到makefiles中,那编译的时间,估计可以看完变形金刚了。如果选第二个,那就加入子目录和库到makefiles,这样就能加快编译的速度。

-no-largefile -largefile

顾名思义,支不支持大文件,一般来说,嵌入式里是不会有从超过4G的大文件的,那就选第一个吧。 -no-exceptions -exceptions

计算机英语够好的人都该懂,这个自然就是异常情况,选则编译器支持抛出异常,否则不支持。 -no-accessibility -accessibility

可访问性的支持,说实话,这个我真不知道有什么有用了。等哪天发现了,再来好好解释。 -no-stl -stl

是都加入stl的支持,stl,这应该算是C++程序员应该都了解了,再不济,那也总听说过大名吧。 no-sql- -qt-sql- -plugin-sql-

这个可要好好说明下,一般来说,对于一个优秀的项目开发,数据库是必不可少的,qt也自带了大多数数据库驱动,可以完美地支持数据库的使用。对于数据库的使用,我们可以直接qt驱动编译进去,或者以插件的形式编译进去。一般来说,最简单地就是直接编译进去,但使用插件形式的可以更加灵活,针对不同的需求将驱动插件添加。其中,<>代表的是驱动名,如果我想直接添加sqlite的支持话,形式如下:-qt-sql-sqlite。其他名称可以自己查看参数里,有详细地介绍。 -system-sqlite

sqlite真受欢迎啊,当然那么优秀的嵌入式数据库,本人也是基本使用它来进行开发。这个参数意思是使用操作系统上的sqlite数据库,如果是不太会移植的,可以考虑直接使用qt自带的驱动。 -no-qt3support -qt3support

这个也是简洁易懂,加不加对qt3的支持。 no-xmlpatterns -xmlpatterns

选择对xml的支持,如果对网络无需求的话,就不用加了。 -no-phonon -phonon

phonon是qt中处理多媒体的模块,比如放放视频什么来着,不过本人从没用过,也是根据需要选择的。

-no-phonon-backend -phonon-backend

与上面类似,只不过这两是以插件的形式加入支持。 -no-svg -svg

是否加入svg的支持,svg即可缩放矢量图形。 -no-webkit -webkit

是否加入webkit的支持,这可是个好东西,不过如果跟网络不搭界的话,还是不支持吧。 -no-scripttools -scripttools

是否加入脚本工具的支持,这对php等脚本工程师来说是个很棒的参数,但对于我这样菜鸟,就别提了。

-platform target

目标平台,这可是关键了,如果不注意的话,编译出来是x86上的话,哪怕是再牛的嵌入式工程师来也没法帮你移植到开发板上。通常,本人是linux-arm-g++。 -no-mmx -no-3dnow -no-sse -no-sse2

这四个参数是针对CPU的指令集,老实说,我也不甚了解,不过,对于开发并不是影响很大。 -qtnamespace

把qt的库封装到命名空间,没啥重要用处,依个人爱好加吧。 -qtlibinfix

将所有的qt的.so库重命名,也没啥大用处。

-qt-zlib -system-zlib

想必经过上面的讲解,参数的意思已经很快得知,就是选择qt带的zlib库还是系统的zlib。zlib库是用于文件和资料压缩的库,对于新入嵌入式的人来说,可能并无太大的用处,但是在以后的实际开发中,特别是对于多媒体图像图形的工程师来说,就肯定用到,因为图形图像的压缩都要使用或涉及到这个库。

-no-gif -qt-gif

这是选择gif的支持,如果选择qt支持的话,那在用qt开发的项目中,就能显示gif图,gif也是比较普遍的图片格式了,英文全称是Graphics Interchange Format。

-no-libtiff -qt-libtiff -system-libtiff

tiff是一种非常复杂的光栅图像格式,并且有直接现成的C语言实现库,因此选择参数时就有了qt和system,一般来说,科学相关的开发里可能会用到。

-no-libpng -qt-libpng -system-libpng

png的相关参数,一种非失真性压缩位图图形文件格式,其实就是为了替代gif搞出来的,也是随实际需要来选择,当然,也有C语言实现的库。

-no-libmng -qt-libmng -system-libmng

大汗,大汗,这可是超级罕见的东西,QT竟然也能支持,说实话,这个参数我看来就是无视的。MNG是多帧PNG动画格式,结构极其复杂,基本没人用。

-no-libjpeg -qt-libjpeg -system-libjpeg

jpeg,这么有名的图片格式也不用说了,随需要选择吧。

-no-openssl -openssl -openssl-linked

SSL,Security Socket Layer,是一个安全传输协议,在Internet网上进行数据保护和身份确认,而OpenSSL是一个开放源代码的实现了SSL及相关加密技术的软件包,在qt中,我们可以选择直接支持,或者OpenSSL链接支持,这个参数也是为有需要者提供的。

以上是第三方库的参数选择,紧接着就是qt附加参数,在附加参数里,我们可以指定编译的部分及加入参数来获取信息。

-make -nomake

一句话,说明,就说我可以这两个参数选择哪些我要编译,哪些我不需要,在 libs tools examples demos docs translations这些里你可以选择,比如examples,并不重要,可以放在-nomake后,这样编译过程中就不会编译这部分了。通过适当的选择,我们可以大大加快编译的速度,这对配置较差的机子来说有着积极意义。

-R -l

这两个参数是为编译时增加一个库的运行路径及头文件的路径,比如使用tslib作为开发触摸驱动时,我们就应使用这两个参数来指定tslib的库路径和头文件路径。

-no-rpath -rpath

这个参数比较难于理解,简单地说,就是告诉动态加载器,到-rpath指定的目录中寻找编译时须要的动态链接库,语法就与上面的参数结合,比如 -rpath -R/home/xxxx。

-continue

这个参数的作用就是当出现错误时依然进行配置编译,换我是不会加上的。

-verbose, -v

这个参数就很眼熟,在前面的文章中有过详细介绍,简言之,就是显示配置的每一步的具体信息。

-no-optimized-qmake -optimized-qmake

是否编译生成优化过的qmake,没啥大用,也属于可有可无的参数。

-no-nis -nis

是否编译NIS支持,NIS(网络信息服务)是一个提供目录服务的RPC(远程过程调用)应用服务,当然没网络需要的可以再次华丽地无视。

-no-cups -cups

是否编译CUPS支持,是不是想问什么用啊?~~~~囧,开打印店用的。好了,不说冷笑话,CUPS给Unix/Linux用户提供了一种可靠有效的方法来管理打印。它支持IPP,并提供了LPD,SMB(服务消息块,如配置为微软WINDOWS的打印机)、JetDirect等接口。CUPS还可以浏览网络打印机。它的开发提供者是大名鼎鼎的―水果生产商‖—-苹果公司。

-no-iconv -iconv

选择是否编译iconv支持,iconv是一个计算机程序以及一套应用程序编程接口的名称。它的作用是在多种国际编码格式之间进行文本内码的转换。这对跨语言Qt开发人员来说是很有用的,当然,考虑到中文的编码,我也选择加入支持。

-no-pch -pch

是否支持预编译过的头文件。预编译头就是把一个工程中的一部分代码,预先编译好放在一个文件里(通常以.pch为扩展名),这个文件就称为预编译头文件。这些预先编译好的代码在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。妈妈经常说:不懂就要学。我说:不懂就加上。。。

no-dbus -dbus -dbus-linked

是否编译编译QtDBus模块。dbus是freedesktop下开源的Linux IPC通信机制,本身Linux 的IPC通信机制包括,管道(fifo),共享内存,信号量,消息队列,Socket等。在Qt中DBUS是有单独的模块的,可见其重要性。

-reduce-relocations

对于额外的库链接器优化,可以减少编译中的再定位。

no-separate-debug-info -separate-debug-info

是否存储debug信息在.debug,一般为了查错,还是选择存储吧。

-xplatform target

相当浅显的参数,即交叉编译的目标平台,一般来说根据你所要移植的目标板来确定。 -no-feature- -feature-

选取qte的feature编译,对于这个,我理解为特性,特性的描述你可以参考

src/corelib/global/qfeatures.txt,在这里面对于每个特性都有比较充分的讲解。对于特性地选择,也是要根据开发需求进行,如果裁剪适当,能大大为qte库瘦身。 -embedded

嵌入式平台架构选择,可以选择arm,mips,x86及generic,视你的目标平台决定吧。 -armfpa -no-armfpa

这个参数也只是针对ARM平台的,是否加入对于基于ARM的浮点数格式的支持,通常,这个参数在编译时会自动选择。 -little-endian -big-endian

目标平台的大端和小端选择,这应该是常识了,如果这不知道,就不要来混嵌入式了

-host-little-endian -host-big-endia

主机平台的大端和小端选择,属于鸡肋的参数,不选择也会在配置时自动选择。 -no-freetype -qt-freetype -system-freetype

选择freetype,FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,在嵌入式开发中,有套可使用的字体对于中文开发至关重要,本人一般使用文泉驿字体。 -qconfig local

使用本地的qconfig配置文件来替代全部参数配置,有需要的可以去研究下,可以裁剪控件级别的参数。 -depths

显示的像素位深,也是根据需要来进行吧。 -qt-decoration-