inux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本

7 篇文章 1 订阅

inux(debian) arm-linux-g++ v4.5.1交叉编译 embedded arm 版本的QtWebkit (browser) 使用qt 4.8.6 版本

 http://www.cnblogs.com/bleachli/p/4759587.html

最近需要做一个项目 在arm 架构的linux下 没有桌面环境的情况下拉起 有界面的浏览器使用.

考虑用qt 的界面和 qtwebikt 的库去实现这一系列操作.

 

本文参考:

Qt移植到ARM Linux教程:http://www.veryarm.com/930.html

成功移植qt软键盘和输入法到arm开发板的qt程序中:http://www.csdn1 2 3.com/html/mycsdn20140110/d1/d1ecf8c322c9447b049f2a71d12f5e87.html

请把上面1 2 3 换成123

 

关于鼠标不能通用 .

http://blog.chinaunix.net/uid-22666248-id-226373.html

http://wenku.baidu.com/link?url=xmdOvKLdA8W91VQqlNSyYmAw6PsKc6jV5w2mVh6y6lqSgiXbTztGx1P8ewMOAX8vF3JxOGNXseSBRjlQB3N7eBJtfZXYqv7F5vroZwr7TsO

目录:
  1. 前言

  2. 下载tslib和qt

  3. 交叉编译器机所在linux的环境准备

  4. 编译tslib

  5. 编译安装qt

  6. 移植到Embedded arm

  7. 单独对qt-everywhere-opensource-src-4.8.6\demos\browser 的编译.

 

存在问题鼠标不能操作(后面发现鼠标存在,只是颜色透明,且移动飞快...),键盘 没有中文输入法 .后续待解决

 

1,前言

引用

Qt 4.8.6 X11、embeded x86(qvfb运行 )、embeded arm各个版本编译总结

的话:

复制代码
QT是跨平台C++图形用户界面应用程序开发框架,可以实现一套源码,多个平台编译运行。可视为平台无关的开发环境。

QT源码可以被编译成很多个版本,这里介绍3个版本:linux桌面版(X11),embeded x86版,embeded arm版。编译后生成对应平台库文件,使用某平台的编译器编译应用程序时就会链接对应平台的库文件,这样应用程序就能在该平台下运行。

1、X11版(默认版本)
X11版本的QT可以在使用X windows系统的linux 桌面操作系统上运行(我用的是Ubuntu),如果不需要开发桌面应用程序,可以不编译。

2、Embeded x86版
这个版本为什么是嵌入版(Embeded)的,因为x86台式机本身也可以当做一个嵌入式系统,但是Embeded x86版的QT不能直接通过X11窗口系统输出画面,这时我们可以借助X11的qvfb工具仿真一个LCD输出设备(QWS环境),这样Embeded x86应用程序就能在Ubuntu里仿真运行了。要理解这点其实很简单,以Ubuntu为例,Ubuntu的应用程序是以X11协议(X窗口系统)输送到屏幕显示界面的,X server负责图形显示,应用程序负责计算、修改数据,两者基于某种协议通信。对于嵌入式linux,qt应用程序也需要一个窗口系统才能显示,但是嵌入式linux系统不能使用X11(太耗资源了),奇趣公司就专门开发了一个qws(QT windows system), 应用程序按照协议向qws发送数据,服务端负责显示数据。现在,qvfb就是QWS的显示设备。
另外请注意,Embeded x86版的QT应用程序是不能在arm开发板上运行的。
embeded x86版并不是我们的开发板最终使用的QT库,编译这个版本只是为了方便我们调试, 先在ubuntu中仿真运行,看看界面,不必下载到开发板的文件系统中运行,两者的运行效果除了界面基本相同,其他方面还是有差异的。

3、Embeded arm版
这个版本才是我们在arm开发板上运行的版本。

我们做嵌入式开发,其实只需编译第3版本的QT(Embeded arm版),编译X11 版本的目的只是方便我个人学习QT,编译Embeded x86只是为了体验仿真效果。
复制代码

  

但是嵌入式linux系统不能使用X11(太耗资源了),奇趣公司就专门开发了一个qws(QT windows system), 应用程序按照协议向qws发送数据,服务端负责显示数据。现在,qvfb就是QWS的显示设备。

 

所以后面才有了 ./qtwebkitdemo  -qws  的方式运行.

   

 

2,下载tslib和qt

  Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。

  在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。

  到 github 下载 tslib最新版,地址:https://github.com/kergoth/tslib,下载后文件名为:tslib-master.zip。

 

 

  到 Qt 官网下载合适的 Qt 版本,地址:http://download.qt-project.org/archive/qt/。本教程以 4.8.6为例,下载的压缩包名称为: qt-everywhere-opensource-src-4.8.6.tar.gz。

   

  之所以用qt 4.8.6这个稳定版本是因为 用qt  5.5.0 会报

pragma GCC diagnostic 这个错.

  后面发现是gcc 版本低于4.6 .

  

复制代码
../../include/QtBluetooth/../../src/bluetooth/qbluetoothdevicediscoveryagent.h:49:16: warning: expected [error|warning|ignored] after '#pragma GCC diagnostic'

qbluetoothuuid.cpp:590:1: error: #pragma GCC diagnostic not allowed inside functions
qbluetoothuuid.cpp:591:1: error: #pragma GCC diagnostic not allowed inside functions
qbluetoothuuid.cpp:592:79: warning: dereferencing type-punned pointer will break strict-aliasing rules
qbluetoothuuid.cpp:593:79: warning: dereferencing type-punned pointer will break strict-aliasing rules
qbluetoothuuid.cpp:594:79: warning: dereferencing type-punned pointer will break strict-aliasing rules
qbluetoothuuid.cpp:595:1: error: #pragma GCC diagnostic not allowed inside functions

 
复制代码

 

  

 

3,交叉编译器机所在linux的环境准备

 

sudo apt-get install automake autoconf libtool m4
sudo apt-get install libX11-dev libXext-dev libXtst-dev libXrender-dev 

  

  安装交叉编译器

  本文全用 arm-linux-g++ v4.5.1 

  安装方法,参考:

  arm-linux-gcc-4.5.1的安装方法:http://blog.sina.com.cn/s/blog_68f3489201014a86.html

  Ubuntu 13.4 安装Arm-linux-gcc 详细过程:http://lieyan.lofter.com/post/225d54_afc506

 

复制代码
root@debian:/disk2# arm-linux-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gcc
COLLECT_LTO_WRAPPER=/usr/arm-linux-g++_4.5.1/4.5.1/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.1/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /work/toolchain/build/src/gcc-4.5.1/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.5.1 --with-sysroot=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --enable-languages=c,c++ --disable-multilib --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-fpu=vfp --with-float=softfp --with-pkgversion=ctng-1.8.1-FA --with-bugurl=http://www.arm9.net/ --disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-mpfr=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-ppl=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-cloog=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-mpc=/work/toolchain/build/arm-none-linux-gnueabi/build/static --with-libelf=/work/toolchain/build/arm-none-linux-gnueabi/build/static --enable-threads=posix --with-local-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.5.1 (ctng-1.8.1-FA) 
root@debian:/disk2# 
复制代码

  

 

4, 编译tslib

  

复制代码
unzip tslib-master.zip
cd tslib-master

./autogen.sh
$ ./configure CC=arm-linux-gcc CXX=arm-linux-g++ --host=arm-none-linux-gnueabi --prefix=/usr/local/tslib ac_cv_func_malloc_0_nonnull=yes

make
sudo make install
复制代码

  

完成后,tslib会按安装到主机 /usr/local/tslib 目录下。
进入下一步之前,先将主机中 /usr/local/tslib/etc/ts.conf 文件第二行“#module_raw input”的注释去掉,变为“module_raw input”,注意一定要顶格。

  

5,编译安装qt

  难啃的骨头终于开始了. !!!

  

tar xjvf qt-everywhere-opensource-src-4.8.6.tar.bz2
cd qt-everywhere-opensource-src-4.8.6

  

  打开 qt-everywhere-opensource-src-4.8.6\mkspecs\qws\linux-arm-g++ 目录下的 qmake.conf(请先备份)  

  注:

  关于qws 之前一直不明所以....

  还记得文章开头的

 

  "

但是嵌入式linux系统不能使用X11(太耗资源了),奇趣公司就专门开发了一个qws(QT windows system), 应用程序按照协议向qws发送数据,服务端负责显示数据。现在,qvfb就是QWS的显示设备。

 

所以后面才有了 ./qtwebkitdemo  -qws  的方式运行.

"

所以,,恍然大W...

 

 

原内容:

复制代码
#
# qmake configuration for building with arm-linux-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = arm-linux-gcc
QMAKE_CXX               = arm-linux-g++
QMAKE_LINK              = arm-linux-g++
QMAKE_LINK_SHLIB        = arm-linux-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-ar cqs
QMAKE_OBJCOPY           = arm-linux-objcopy
QMAKE_STRIP             = arm-linux-strip

load(qt_config)
复制代码

 

 

  改成

复制代码
#
# qmake configuration for building with arm-linux-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-gcc -lts
QMAKE_CXX               = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-g++ -lts
QMAKE_LINK              = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-g++ -lts
QMAKE_LINK_SHLIB        = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-g++ -lts

# modifications to linux.conf
QMAKE_AR                = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-ar cqs
QMAKE_OBJCOPY           = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-objcopy
QMAKE_STRIP             = /usr/arm-linux-g++_4.5.1/4.5.1/bin/arm-linux-strip

load(qt_config)
复制代码

  为防止找不到路径,所以直接全路径了.  简单粗暴.

 

  再来看看

  ./configure --help

 

  

复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# ./configure --help
Usage:  configure [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir <dir>]
        [-docdir <dir>] [-headerdir <dir>] [-plugindir <dir> ] [-importdir <dir>] [-datadir <dir>]
        [-translationdir <dir>] [-sysconfdir <dir>] [-examplesdir <dir>]
        [-demosdir <dir>] [-buildkey <key>] [-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-<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] [-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 <part>]
        [-nomake <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-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 <namespace>] [-qtlibinfix <infix>] [-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:

    -qpa [name] ......... This will enable the QPA build.
                          QPA is a window system agnostic implementation of Qt.
                          If [name] is given, sets the default QPA platform (e.g xcb, cocoa).

 These are optional, but you may specify install directories.

    -prefix <dir> ...... This will install everything relative to <dir>
                         (default /usr/local/Trolltech/Qt-4.8.6)

  * -prefix-install .... Force a sandboxed "local" installation of
                         Qt. This will install into
                         /usr/local/Trolltech/Qt-4.8.6, if this option is
                         disabled then some platforms will attempt a
                         "system" install by placing default values
                         in a system location other than PREFIX.

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

    -bindir <dir> ......... Executables will be installed to <dir>
                            (default PREFIX/bin)
    -libdir <dir> ......... Libraries will be installed to <dir>
                            (default PREFIX/lib)
    -docdir <dir> ......... Documentation will be installed to <dir>
                            (default PREFIX/doc)
    -headerdir <dir> ...... Headers will be installed to <dir>
                            (default PREFIX/include)
    -plugindir <dir> ...... Plugins will be installed to <dir>
                            (default PREFIX/plugins)
    -importdir <dir> ...... Imports for QML will be installed to <dir>
                            (default PREFIX/imports)
    -datadir <dir> ........ Data used by Qt programs will be installed to <dir>
                            (default PREFIX)
    -translationdir <dir> . Translations of Qt programs will be installed to <dir>
                            (default PREFIX/translations)
    -sysconfdir <dir> ..... Settings used by Qt programs will be looked for in <dir>
                            (default PREFIX/etc/settings)
    -examplesdir <dir> .... Examples will be installed to <dir>
                            (default PREFIX/examples)
    -demosdir <dir> ....... Demos will be installed to <dir>
                            (default PREFIX/demos)

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

    -buildkey <key> .... Build the Qt library and plugins using the specified
                         <key>.  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-system-proxies . Do not use system network proxies by default.
    -system-proxies .... Use system network proxies by default.

    -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-<driver> ... Disable SQL <driver> entirely.
    -qt-sql-<driver> ... Enable a SQL <driver> in the QtSql library, by default
                         none are turned on.
    -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to
                         at run time.

                         Possible values for <driver>:
                         [  db2 ibase mysql oci odbc psql sqlite sqlite2 sqlite_symbian symsql 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 <sys> 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 <name>  Wraps all Qt library code in 'namespace <name> {...}'.
    -qtlibinfix <infix>  Renames all libQt*.so to libQt*<infix>.so.

    -D <string> ........ Add an explicit define to the preprocessor.
    -I <string> ........ Add an explicit include path.
    -L <string> ........ 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.

    -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 <part> ....... Add part to the list of parts to be built at make time.
                         (libs tools examples demos docs translations)
    -nomake <part> ..... Exclude part from the list of parts to be built.

    -R <string> ........ Add an explicit runtime library path to the Qt
                         libraries.
    -l <string> ........ 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 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 <api> ...... 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 <api>
                         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.

root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# 
复制代码

  

  关于 -prefix  -prefix-install  如果不指定 :

  编译后在 embedded arm 中要把 lib  bin  放在  /usr/local/Trolltech/Qt-4.8.6 这个目录下,不存在就需要创建

  

-prefix <dir> ...... This will install everything relative to <dir>
(default /usr/local/Trolltech/Qt-4.8.6)

* -prefix-install .... Force a sandboxed "local" installation of
Qt. This will install into
/usr/local/Trolltech/Qt-4.8.6, if this option is
disabled then some platforms will attempt a
"system" install by placing default values
in a system location other than PREFIX.

  

  我的./configure

-I后面指定上一步tslib的include路径,-L后面指定上一步tslib的lib路径,

复制代码
./configure  -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions  -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg  -make libs -make tools -make examples -make demos  -make translations -nomake docs -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb   -armfpa   -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license  
复制代码

 

  这儿的重要参数就是,其实都是重要参数. 这个需要看的比较多.

  需要编译webkit,demos 因为demos 包含了我们需要的browser示例.

 

  如果出现以下错误,则是 mkspecs/qws/linux-arm-g++/qmake.conf 中编译器没找到路径,所以用全路径啊.:

  

The tslib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR and QMAKE_LIBDIR in
qt-everywhere-opensource-src-4.8.6/mkspecs/qws/linux-arm-g++.

  编译安装:

  

make 


make install

  这儿是漫长的,差不多要5个小时.

 

  make完成后.

  打包 exe和 lib .本文直接 把 qt-everywhere-opensource-src-4.8.6\demos\browser\browser 这个exe放在lib目录下,方便 embedded arm 下使用.

注意 lib下的 所有都有拷贝走,包含 ./lib/fonts  这个字体目录.程序需要.

 

复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# ls -l lib
total 80204
-rw-r--r-- 1 root root   711791 Aug 23 05:56 browser
drwxr-xr-x 2 1001 1001     4096 Apr 10  2014 fonts
-rw-r--r-- 1 root root      521 Aug 22 13:10 libpvrQWSWSEGL.prl
-rw-r--r-- 1 root root      788 Aug 22 13:10 libQAxContainer.prl
-rw-r--r-- 1 root root      755 Aug 22 13:10 libQAxServer.prl
-rw-r--r-- 1 root root      899 Aug 25 20:07 libQt3Support.la
-rw-r--r-- 1 root root      863 Aug 25 20:07 libQt3Support.prl
lrwxrwxrwx 1 root root       22 Aug 25 03:33 libQt3Support.so -> libQt3Support.so.4.8.6
lrwxrwxrwx 1 root root       22 Aug 25 03:33 libQt3Support.so.4 -> libQt3Support.so.4.8.6
lrwxrwxrwx 1 root root       22 Aug 25 03:33 libQt3Support.so.4.8 -> libQt3Support.so.4.8.6
-rwxr-xr-x 1 root root  3364328 Aug 25 03:33 libQt3Support.so.4.8.6
-rw-r--r-- 1 root root      868 Aug 25 20:08 libQtCLucene.la
-rw-r--r-- 1 root root      849 Aug 25 20:08 libQtCLucene.prl
lrwxrwxrwx 1 root root       21 Aug 25 06:13 libQtCLucene.so -> libQtCLucene.so.4.8.6
lrwxrwxrwx 1 root root       21 Aug 25 06:13 libQtCLucene.so.4 -> libQtCLucene.so.4.8.6
lrwxrwxrwx 1 root root       21 Aug 25 06:13 libQtCLucene.so.4.8 -> libQtCLucene.so.4.8.6
-rwxr-xr-x 1 root root  1541589 Aug 25 06:13 libQtCLucene.so.4.8.6
-rw-r--r-- 1 root root      755 Aug 25 20:07 libQtCore.la
-rw-r--r-- 1 root root      723 Aug 25 20:07 libQtCore.prl
lrwxrwxrwx 1 root root       18 Aug 25 02:59 libQtCore.so -> libQtCore.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 25 02:59 libQtCore.so.4 -> libQtCore.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 25 02:59 libQtCore.so.4.8 -> libQtCore.so.4.8.6
-rwxr-xr-x 1 root root  4026474 Aug 25 02:59 libQtCore.so.4.8.6
-rw-r--r-- 1 root root      843 Aug 22 13:10 libQtDBus.la
-rw-r--r-- 1 root root      821 Aug 22 13:10 libQtDBus.prl
-rw-r--r-- 1 root root      947 Aug 25 20:07 libQtDeclarative.la
-rw-r--r-- 1 root root      881 Aug 25 20:07 libQtDeclarative.prl
lrwxrwxrwx 1 root root       25 Aug 25 04:04 libQtDeclarative.so -> libQtDeclarative.so.4.8.6
lrwxrwxrwx 1 root root       25 Aug 25 04:04 libQtDeclarative.so.4 -> libQtDeclarative.so.4.8.6
lrwxrwxrwx 1 root root       25 Aug 25 04:04 libQtDeclarative.so.4.8 -> libQtDeclarative.so.4.8.6
-rwxr-xr-x 1 root root  4694510 Aug 25 04:04 libQtDeclarative.so.4.8.6
-rw-r--r-- 1 root root      604 Aug 25 20:08 libQtDesignerComponents.prl
lrwxrwxrwx 1 root root       32 Aug 25 06:34 libQtDesignerComponents.so -> libQtDesignerComponents.so.4.8.6
lrwxrwxrwx 1 root root       32 Aug 25 06:34 libQtDesignerComponents.so.4 -> libQtDesignerComponents.so.4.8.6
lrwxrwxrwx 1 root root       32 Aug 25 06:34 libQtDesignerComponents.so.4.8 -> libQtDesignerComponents.so.4.8.6
-rwxr-xr-x 1 root root  3491318 Aug 25 06:34 libQtDesignerComponents.so.4.8.6
-rw-r--r-- 1 root root      548 Aug 25 20:08 libQtDesigner.prl
lrwxrwxrwx 1 root root       22 Aug 25 06:27 libQtDesigner.so -> libQtDesigner.so.4.8.6
lrwxrwxrwx 1 root root       22 Aug 25 06:27 libQtDesigner.so.4 -> libQtDesigner.so.4.8.6
lrwxrwxrwx 1 root root       22 Aug 25 06:27 libQtDesigner.so.4.8 -> libQtDesigner.so.4.8.6
-rwxr-xr-x 1 root root  6113245 Aug 25 06:27 libQtDesigner.so.4.8.6
-rw-r--r-- 1 root root      840 Aug 25 20:07 libQtGui.la
-rw-r--r-- 1 root root      815 Aug 25 20:07 libQtGui.prl
lrwxrwxrwx 1 root root       17 Aug 25 03:28 libQtGui.so -> libQtGui.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 03:28 libQtGui.so.4 -> libQtGui.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 03:28 libQtGui.so.4.8 -> libQtGui.so.4.8.6
-rwxr-xr-x 1 root root 12834491 Aug 25 03:28 libQtGui.so.4.8.6
-rw-r--r-- 1 root root      863 Aug 25 20:08 libQtHelp.la
-rw-r--r-- 1 root root      846 Aug 25 20:08 libQtHelp.prl
lrwxrwxrwx 1 root root       18 Aug 25 06:15 libQtHelp.so -> libQtHelp.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 25 06:15 libQtHelp.so.4 -> libQtHelp.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 25 06:15 libQtHelp.so.4.8 -> libQtHelp.so.4.8.6
-rwxr-xr-x 1 root root   651089 Aug 25 06:15 libQtHelp.so.4.8.6
-rw-r--r-- 1 root root     1013 Aug 22 13:10 libQtMeeGoGraphicsSystemHelper.la
-rw-r--r-- 1 root root      903 Aug 22 13:10 libQtMeeGoGraphicsSystemHelper.prl
-rw-r--r-- 1 root root      897 Aug 25 20:07 libQtMultimedia.la
-rw-r--r-- 1 root root      835 Aug 25 20:07 libQtMultimedia.prl
lrwxrwxrwx 1 root root       24 Aug 25 03:46 libQtMultimedia.so -> libQtMultimedia.so.4.8.6
lrwxrwxrwx 1 root root       24 Aug 25 03:46 libQtMultimedia.so.4 -> libQtMultimedia.so.4.8.6
lrwxrwxrwx 1 root root       24 Aug 25 03:46 libQtMultimedia.so.4.8 -> libQtMultimedia.so.4.8.6
-rwxr-xr-x 1 root root   221760 Aug 25 03:46 libQtMultimedia.so.4.8.6
-rw-r--r-- 1 root root      856 Aug 25 20:07 libQtNetwork.la
-rw-r--r-- 1 root root      806 Aug 25 20:07 libQtNetwork.prl
lrwxrwxrwx 1 root root       21 Aug 25 03:02 libQtNetwork.so -> libQtNetwork.so.4.8.6
lrwxrwxrwx 1 root root       21 Aug 25 03:02 libQtNetwork.so.4 -> libQtNetwork.so.4.8.6
lrwxrwxrwx 1 root root       21 Aug 25 03:02 libQtNetwork.so.4.8 -> libQtNetwork.so.4.8.6
-rwxr-xr-x 1 root root  1606434 Aug 25 03:02 libQtNetwork.so.4.8.6
-rw-r--r-- 1 root root      869 Aug 22 13:10 libQtOpenGL.la
-rw-r--r-- 1 root root      824 Aug 22 13:10 libQtOpenGL.prl
-rw-r--r-- 1 root root      869 Aug 22 13:10 libQtOpenVG.la
-rw-r--r-- 1 root root      824 Aug 22 13:10 libQtOpenVG.prl
-rw-r--r-- 1 root root      516 Aug 22 13:10 libQtRemote.prl
-rw-r--r-- 1 root root      849 Aug 25 20:07 libQtScript.la
-rw-r--r-- 1 root root      831 Aug 25 20:07 libQtScript.prl
lrwxrwxrwx 1 root root       20 Aug 25 03:55 libQtScript.so -> libQtScript.so.4.8.6
lrwxrwxrwx 1 root root       20 Aug 25 03:55 libQtScript.so.4 -> libQtScript.so.4.8.6
lrwxrwxrwx 1 root root       20 Aug 25 03:55 libQtScript.so.4.8 -> libQtScript.so.4.8.6
-rwxr-xr-x 1 root root  3052585 Aug 25 03:55 libQtScript.so.4.8.6
-rw-r--r-- 1 root root      915 Aug 25 20:08 libQtScriptTools.la
-rw-r--r-- 1 root root      849 Aug 25 20:08 libQtScriptTools.prl
lrwxrwxrwx 1 root root       25 Aug 25 06:08 libQtScriptTools.so -> libQtScriptTools.so.4.8.6
lrwxrwxrwx 1 root root       25 Aug 25 06:08 libQtScriptTools.so.4 -> libQtScriptTools.so.4.8.6
lrwxrwxrwx 1 root root       25 Aug 25 06:08 libQtScriptTools.so.4.8 -> libQtScriptTools.so.4.8.6
-rwxr-xr-x 1 root root   983124 Aug 25 06:08 libQtScriptTools.so.4.8.6
-rw-r--r-- 1 root root      828 Aug 25 20:07 libQtSql.la
-rw-r--r-- 1 root root      794 Aug 25 20:07 libQtSql.prl
lrwxrwxrwx 1 root root       17 Aug 25 03:03 libQtSql.so -> libQtSql.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 03:03 libQtSql.so.4 -> libQtSql.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 03:03 libQtSql.so.4.8 -> libQtSql.so.4.8.6
-rwxr-xr-x 1 root root   844732 Aug 25 03:03 libQtSql.so.4.8.6
-rw-r--r-- 1 root root      848 Aug 25 20:07 libQtSvg.la
-rw-r--r-- 1 root root      814 Aug 25 20:07 libQtSvg.prl
lrwxrwxrwx 1 root root       17 Aug 25 03:47 libQtSvg.so -> libQtSvg.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 03:47 libQtSvg.so.4 -> libQtSvg.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 03:47 libQtSvg.so.4.8 -> libQtSvg.so.4.8.6
-rwxr-xr-x 1 root root   428747 Aug 25 03:47 libQtSvg.so.4.8.6
-rw-r--r-- 1 root root      835 Aug 25 20:07 libQtTest.la
-rw-r--r-- 1 root root      803 Aug 25 20:07 libQtTest.prl
lrwxrwxrwx 1 root root       18 Aug 25 03:04 libQtTest.so -> libQtTest.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 25 03:04 libQtTest.so.4 -> libQtTest.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 25 03:04 libQtTest.so.4.8 -> libQtTest.so.4.8.6
-rwxr-xr-x 1 root root   195211 Aug 25 03:04 libQtTest.so.4.8.6
-rw-r--r-- 1 root root  1315980 Aug 25 06:20 libQtUiTools.a
-rw-r--r-- 1 root root      730 Aug 25 20:08 libQtUiTools.prl
-rw-r--r-- 1 root root      943 Aug 25 20:08 libQtWebKit.la
-rw-r--r-- 1 root root      804 Aug 25 20:08 libQtWebKit.prl
lrwxrwxrwx 1 root root       20 Aug 25 06:04 libQtWebKit.so -> libQtWebKit.so.4.9.4
lrwxrwxrwx 1 root root       20 Aug 25 06:04 libQtWebKit.so.4 -> libQtWebKit.so.4.9.4
lrwxrwxrwx 1 root root       20 Aug 25 06:04 libQtWebKit.so.4.9 -> libQtWebKit.so.4.9.4
-rwxr-xr-x 1 root root 29722397 Aug 25 06:04 libQtWebKit.so.4.9.4
-rw-r--r-- 1 root root      828 Aug 25 20:07 libQtXml.la
-rw-r--r-- 1 root root      896 Aug 25 20:07 libQtXmlPatterns.la
-rw-r--r-- 1 root root      830 Aug 25 20:07 libQtXmlPatterns.prl
lrwxrwxrwx 1 root root       25 Aug 25 03:46 libQtXmlPatterns.so -> libQtXmlPatterns.so.4.8.6
lrwxrwxrwx 1 root root       25 Aug 25 03:46 libQtXmlPatterns.so.4 -> libQtXmlPatterns.so.4.8.6
lrwxrwxrwx 1 root root       25 Aug 25 03:46 libQtXmlPatterns.so.4.8 -> libQtXmlPatterns.so.4.8.6
-rwxr-xr-x 1 root root  5547166 Aug 25 03:46 libQtXmlPatterns.so.4.8.6
-rw-r--r-- 1 root root      794 Aug 25 20:07 libQtXml.prl
lrwxrwxrwx 1 root root       17 Aug 25 02:59 libQtXml.so -> libQtXml.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 02:59 libQtXml.so.4 -> libQtXml.so.4.8.6
lrwxrwxrwx 1 root root       17 Aug 25 02:59 libQtXml.so.4.8 -> libQtXml.so.4.8.6
-rwxr-xr-x 1 root root   347438 Aug 25 02:59 libQtXml.so.4.8.6
lrwxrwxrwx 1 root root       18 Aug 23 21:56 libts-1.0.so.0 -> libts-1.0.so.0.0.0
-rwxr-xr-x 1 root root    13122 Aug 23 21:56 libts-1.0.so.0.0.0
-rwxr-xr-x 1 root root      937 Aug 23 21:56 libts.la
lrwxrwxrwx 1 root root       18 Aug 23 21:56 libts.so -> libts-1.0.so.0.0.0
drwxr-xr-x 2 root root     4096 Aug 23 21:56 pkgconfig
-rwxrwxrwx 1 1001 1001       75 Apr 10  2014 README
drwxr-xr-x 2 root root     4096 Aug 23 21:56 ts
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# 
复制代码

 

复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# ls
bin              demos               lib           Makefile      templates
changes-4.8.6    doc                 lib2          mkspecs       tools
config.profiles  examples            lib2.tar.gz   plugins       translations
config.status    imports             lib3.tar.gz   projects.pro  util
config.tests     include             LICENSE.FDL   qmake
configure        INSTALL             LICENSE.GPL3  README
configure.exe    LGPL_EXCEPTION.txt  LICENSE.LGPL  src
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# tar -zcf lib.tar.gz lib
复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6# cd /usr/local/
root@debian:/usr/local# ls
arm-linux-lib  etc    include  man   share  tslib
bin            games  lib      sbin  src    tslib.tar.gz
root@debian:/usr/local# tar -zcf tslib.tar.gz tslib

 

 6,移植到Embedded arm 

   

  

   上面有说到:

  "

  关于 -prefix  -prefix-install  如果不指定 :

  编译后在 embedded arm 中要把 lib  bin  放在  /usr/local/Trolltech/Qt-4.8.6 这个目录下,不存在就需要创建

  "

  所以 创建  /usr/local/Trolltech/Qt-4.8.6

  

  结果一运行程序 傻眼了,是 

  /usr/local/Trolltech/QtEmbedded-4.8.6-arm

  把  lib.tar.gz  tslib.tar.gz 拷贝到 /usr/local/Trolltech/QtEmbedded-4.8.6-arm 目录下并解压:

  

tar -xzvf lib.tar.gz 
tar -xzvf tslib.tar.gz 

 

  

  配置 so加载路径:

  

# nano /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf

/usr/local/Trolltech/QtEmbedded-4.8.6-arm/tslib/lib
/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib

   运行:

  

  ldconfig

 

  再运行:

  

复制代码
#  ./lib/browser
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory
QWSSocket::connectToLocalFile could not connect:: No such file or directory
No Qt for Embedded Linux server appears to be running.
If you want to run this program as a server,
add the "-qws" command-line option.
复制代码

 

提示以-qws方式 运行...上文已经多次提到过 qws了吧.这儿就不说了

#  ./lib/browser -qws
QSslSocket: cannot resolve SSLv2_client_method
QSslSocket: cannot resolve SSLv2_server_method

如果想打开某一个网页如百度,请使用命令:./browser -qws http://www.baidu.com

 

  

  存在问题鼠标不能操作(后面发现鼠标存在,只是颜色透明,且移动飞快...),键盘 没有中文输入法 .后续解决

 

 

7,单独对qt-everywhere-opensource-src-4.8.6\demos\browser 的编译.

  qt库有了后就不需要再次去编译整个项目了,原因你懂的,每次编译5个小时,要疯的.

  所以需要单独对 browser项目进行编译.

  进入 browser 目录.

  使用

  /disk2/qt-everywhere-opensource-src-4.8.6/bin/qmake  -project

  生成  browser.pro 

  由于对整个qt工程编译时已经生成,故可以跳过

  

  编译browser.pro文件. 因为每次 make 都会调用  browser.pro重新 生成 Makefile 文件... 所以对Makefile文件修改,就不太管用了.

  

复制代码
######################################################################
# Automatically generated by qmake (2.01a) Tue Aug 25 07:41:23 2015
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += . data htmls
INCLUDEPATH += . "../../include/QtWebKit"
QMAKE_LIBS += -lQtWebKit -lQtGui  
# Input
HEADERS += autosaver.h \
           bookmarks.h \
           browserapplication.h \
           browsermainwindow.h \
           chasewidget.h \
           cookiejar.h \
           downloadmanager.h \
           edittableview.h \
           edittreeview.h \
           history.h \
           modelmenu.h \
           networkaccessmanager.h \
           searchlineedit.h \
           settings.h \
           squeezelabel.h \
           tabwidget.h \
           toolbarsearch.h \
           urllineedit.h \
           webview.h \
           xbel.h
FORMS += addbookmarkdialog.ui \
         bookmarks.ui \
         cookies.ui \
         cookiesexceptions.ui \
         downloaditem.ui \
         downloads.ui \
         history.ui \
         passworddialog.ui \
         proxy.ui \
         settings.ui
SOURCES += autosaver.cpp \
           bookmarks.cpp \
           browserapplication.cpp \
           browsermainwindow.cpp \
           chasewidget.cpp \
           cookiejar.cpp \
           downloadmanager.cpp \
           edittableview.cpp \
           edittreeview.cpp \
           history.cpp \
           main.cpp \
           modelmenu.cpp \
           networkaccessmanager.cpp \
           searchlineedit.cpp \
           settings.cpp \
           squeezelabel.cpp \
           tabwidget.cpp \
           toolbarsearch.cpp \
           urllineedit.cpp \
           webview.cpp \
           xbel.cpp
RESOURCES += data/data.qrc htmls/htmls.qrc
复制代码

 

    增加 新的引用库 和头文件目录 

INCLUDEPATH += . "../../include/QtWebKit"
QMAKE_LIBS += -lQtWebKit -lQtGui  

   

  ...

  原 main.cpp文件:

  

复制代码
#include "browserapplication.h"

int main(int argc, char **argv)
{
    Q_INIT_RESOURCE(data);
    BrowserApplication application(argc, argv);
    if (!application.isTheOnlyBrowser())
        return 0;
    application.newMainWindow();
    return application.exec();
}
复制代码

 

现改为:

复制代码
#include "browserapplication.h"
#include "browsermainwindow.h"

#include <QtGui/QApplication>
#include <QTextCodec>
#include <QWSServer>
//#include <QT>
#include<QFont>

int main(int argc, char **argv)
{
    //QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
    //QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
                      
    Q_INIT_RESOURCE(data);
    BrowserApplication application(argc, argv);

    //application.setOverrideCursor(Qt::BlankCursor);   //隐藏鼠标
    //application.setOverrideCursor(Qt::ArrowCursor);  //显示正常鼠标
    application.setOverrideCursor(Qt::ArrowCursor);

    //设置windows 自带宋体
    //QFont font;
    //font.setPointSize(26);
    //font.setFamily(("simsun"));
    //application.setFont(font);

    QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

    QTextCodec *codec = QTextCodec::codecForName("GBK");
    
    application.setFont(QFont("wenquanyi", 10));

    //QWSServer::setCursorVisible(false);
    if (!application.isTheOnlyBrowser())
        return 0;

    BrowserMainWindow  * pMainWindow=NULL;
    pMainWindow=application.newMainWindow();
    pMainWindow->showFullScreen();//全屏

    return application.exec();
}
复制代码

 

   这儿使用了 文泉驿 字体  

 application.setFont(QFont("wenquanyi", 10));

  下载: http://download.csdn.net/download/chenaini119/7867415

  下载解压后,放入 

Embedded arm 中的

/usr/local/Trolltech/QtEmbedded-4.8.6-arm/lib/fonts 中

 

   编译:

root@debian:/disk2/qt-everywhere-opensource-src-4.8.6/demos/browser# /disk2/qt-everywhere-opensource-src-4.8.6/bin/qmake
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6/demos/browser# make

 

  可能出现错误1:

  make[2]: Nothing to be done for `first'.

  ----

  当前工程是的代码没有更改.

  运行 

  /disk2/qt-everywhere-opensource-src-4.8.6/bin/qmake  

  根据 browser.pro 以生成 Makefile文件

  再

  make

 

  或者 make clean 清除

   或删除

  /disk2/qt-everywhere-opensource-src-4.8.6/demos/browser 下面的隐藏文件

  

复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6/demos/browser# find . -name '.*'
.
./.pch
./.moc
./.obj
./.uic
./.rcc
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6/demos/browser# rm -rf .obj
复制代码

 

   

 可能出现错误2:

/release-shared-emb-arm -o .obj/release-shared-emb-arm/bookmarks.o bookmarks.cpp
In file included from bookmarks.cpp:46:0:
history.h:55:32: fatal error: QWebHistoryInterface: No such file or directory

  出现编译错误 缺少 QtWebKit

  browser.pro中添加

INCLUDEPATH += . "../../include/QtWebKit" 
QMAKE_LIBS += -lQtWebKit -lQtGui   

  

复制代码
######################################################################
# Automatically generated by qmake (2.01a) Tue Aug 25 07:41:23 2015
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += . data htmls
#CONFIG += uitools
INCLUDEPATH += . "../../include/QtWebKit" 
QMAKE_LIBS += -lQtWebKit -lQtGui   
# Input


#............后面省略....
复制代码

 

  可能出现错误3:

 程序连接时找不到 QUiLoader 所在的库

  webview.cpp:(.text+0x2d8): undefined reference to `QUiLoader::QUiLoader(QObject*)'
复制代码
sk2/qt-everywhere-opensource-src-4.8.6/lib -lQtGui -lQtNetwork -lQtCore -lpthread 
.obj/release-shared-emb-arm/webview.o: In function `WebPage::createPlugin(QString const&, QUrl const&, QStringList const&, QStringList const&)':
webview.cpp:(.text+0x2d8): undefined reference to `QUiLoader::QUiLoader(QObject*)'
webview.cpp:(.text+0x318): undefined reference to `QUiLoader::createWidget(QString const&, QWidget*, QString const&)'
webview.cpp:(.text+0x344): undefined reference to `QUiLoader::~QUiLoader()'
webview.cpp:(.text+0x36c): undefined reference to `QUiLoader::~QUiLoader()'
复制代码

 

   在lib 下面查找:

  

复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6/lib# find . -name '*Tools*'
./libQtScriptTools.so
./libQtUiTools.prl
./libQtScriptTools.so.4.8
./pkgconfig/QtUiTools.pc
./pkgconfig/QtScriptTools.pc
./libQtScriptTools.so.4
./libQtScriptTools.so.4.8.6
./libQtScriptTools.prl
./libQtScriptTools.la
./libQtUiTools.a
复制代码

 

   存在一个  ./libQtUiTools.a  的静态库文件.

  

  修改 browser.pro文件

  

复制代码
######################################################################
# Automatically generated by qmake (2.01a) Tue Aug 25 07:41:23 2015
######################################################################

TEMPLATE = app
TARGET = 
DEPENDPATH += . data htmls
#CONFIG += uitools
INCLUDEPATH += . "../../include/QtWebKit" "../../include/QtUiTools"
QMAKE_LIBS += -lQtWebKit -lQtGui   -lQtUiTools
# Input


#............后面省略..............
复制代码

 

 

复制代码
root@debian:/disk2/qt-everywhere-opensource-src-4.8.6/demos/browser# ls -la
total 3248
drwxr-xr-x  9 1001 1001    4096 Aug 26 12:48 .
drwxr-xr-x 32 1001 1001    4096 Aug 23 05:47 ..
-rw-r--r--  1 1001 1001    2300 Apr 10  2014 addbookmarkdialog.ui
-rw-r--r--  1 1001 1001    3134 Apr 10  2014 autosaver.cpp
-rw-r--r--  1 1001 1001    2638 Apr 10  2014 autosaver.h
-rw-r--r--  1 1001 1001   31630 Apr 10  2014 bookmarks.cpp
-rw-r--r--  1 1001 1001    8981 Apr 10  2014 bookmarks.h
-rw-r--r--  1 1001 1001    2544 Apr 10  2014 bookmarks.ui
-rwxr-xr-x  1 root root 1404709 Aug 26 12:48 browser
复制代码

  ./browser 已经成功生成 .

  

  再上个图

  

  

  中文 已经有了,,虽然有些丑...将就吧.

  

   在运行时候加个参数 ./browser -qws -nomouse 这个是禁止了所有的鼠标功能,连点击都不响应 -mouse是使用鼠标.

  但程序运行后还是没有看见光标

0
0
(请您对文章做出评价)
« 上一篇: 使用GDB 追踪依赖poco的so程序,core dump文件分析.
» 下一篇: 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...
posted @  2015-08-27 09:23  bleach3 阅读( 145) 评论( 1编辑  收藏
  
#1楼   2015-08-27 15:10  美洲象   
牛!!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值