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
目录:
-
前言
-
下载tslib和qt
-
交叉编译器机所在linux的环境准备
-
编译tslib
-
编译安装qt
-
移植到Embedded arm
-
单独对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是使用鼠标.
但程序运行后还是没有看见光标