一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5359|回复: 0

Qt-5.3.2 在友善Smart210开发板的移植记录

[复制链接]
发表于 2017-6-16 22:27 | 显示全部楼层 |阅读模式
1   平台说明4 i- I0 i3 `( o" Q& `. z7 o4 w4 c
主机平台: Ubuntu 14.04$ i4 j; u! z/ N5 q# `

/ D+ K" T. j7 _/ P( I9 \1 n) A交叉工具链: FrendlyARM的 arm-Linux-gcc-4.5.1-v6-vfp-20120301.tgz
1 P6 l5 r6 V  Q3 y: {目标平台:FrendlyARM的Smart210开发板。(Soc是三星的S5PV210,内核是cortex-a8,下面的移植方法是普适的,不是此平台的也可参考下面的移植步骤)
0 x6 G( t6 J. H9 J4 J) T: X. X- T" H3 A0 j9 D6 u# R
Qt版本: Qt-5.3.2
4 w. ^7 o, h+ \+ R3 G
0 i) O$ x/ d0 _9 n. T% h2   Qt5.3.2在ARM-Linux平台(Mini210开发板)的移植
! V5 k# \1 g8 g4 ?进入Qt5.3.2的源码顶级目录,按照linux系统中自编译软件通用的三个步骤依次执行 ./configure 、make 、make install 即可完成Qt5的编译安装。在执行之前,首先看一下configure的帮助,了解一下各个配置项的作用。
8 q( `' J1 B$ ?% A( E
" ~6 O2 @8 a7 l5 U% w4 N$ ./configure --help >help.txt ; vi help.txt* g- f1 Y* v/ ^0 f2 ~7 X* S
, `& o/ v. Y+ x: s/ W* V

8 S/ t: y0 b6 W* Y! ]" i3 g) d配置时需要注意的几点是:8 |& \$ ^7 O0 C- F: G# m! U& k7 q
3 J# ?# [' P! [% v2 ]! d
如果是交叉编译,需要配置 xplatform选项,比如要在arm-linux平台上移植Qt的话,就在配置项中加上 -xplatform linux-arm-gnueabi-g++ ,Qt5支持的交叉平台都可在源码顶层目录中的 /qtbase/mkspecs/ 下找到,每个子目录名代表一个交叉平台的名字,移植Qt时应根据自己的实际情况修改平台对应的子目录下的qmake.conf文件,它定义了一些与平台相关的环境变量,如交叉编译器等;
0 p$ j+ A3 b: j/ z9 w' {& U& e0 y6 Q5 _' ~6 |; F: }& l
最好不要在编译Qt时使能 C++11,一方面你的编译器可能不支持,另一方面使能这一项后可能出现一部分编译错误;
" ]% Q* e" h4 Q  V+ E2 k) S/ @6 X3 }
如果需要openGL,就需要用 -opengl选项指定opengl的api,对于嵌入式平台,一般使用 opengl ES2,配置选项中加入" -opengl es2 " 。不过想使用openGL可能会比较麻烦,因为openGL一般在有硬件图形加速的条件下才能高效运行,而这需要显卡或Soc厂家提供openGL的支持库,但并不是所有Soc都能找到对应的支持库,比如三星就没有提供S5PV210的openGL库,所以我这里编译的Qt也是没有opengl的。(openGL的替代方案:如果没有厂家提供的硬件图形库,可以考虑使用纯软件实现的opengl,这样的软件库有很多是开源的,如mesa3D库等,不过纯软件实现的opengl在效率方面肯定要比带硬件加速的低很多,而且要想在嵌入式平台上使用,必须将opengl的软件库也交叉编译出来,我在交叉编译mesa3D时遇到了些问题,所以目前还没能在开发板上用上openGL);
5 |! t: D6 E' y6 ~# v+ r3 s/ f3 i1 U8 H" z" Q, e& ^5 H
如果想让Qt程序支持多点触摸,在配置时可能需要加上 -mtdev 和 -xinput2 选项,在help中可以找到这两个选项。mtdev包含了应用程序对多点触摸协议的支持,xinput2实现了Linux的输入子系统对多点触摸的支持。在我这里加上这两个选项的话配置会出错,可能还缺乏一些库,所以最后我没有使用这两个选项;4 A' p5 ~/ P2 s4 Z* H3 e+ `

  M! Z2 p% q& \% @8 v& g# R另外,Qt5默认的qreal类型是64bit的double,如果希望用float类型定义qreal,则在配置选项中加入"-qreal float"。
7 |- P% ^% L" O$ U' U$ L/ O, B+ i/ M% Y. M# X2 U! s. @4 s
我的编译过程如下:) y: d: I/ C! V

. f2 Z# j8 E& a& v# e5 X5 f首先修改 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,内容如下:7 @! h+ S2 E5 n
; u% C' `* `9 p3 T  R' I
[html] view plain copy0 O' b3 x0 A1 M) P! t
#  * L4 E1 b5 [* x5 i, c* l
# qmake configuration for building with arm-linux-gnueabi-g++  
$ Z1 G. V( K% }5 u6 o) S  t#  
% l/ [, F6 z5 R/ m1 n. a9 H; K: m  / f" B- Q0 g4 q1 d" |
MAKEFILE_GENERATOR      = UNIX  
9 Y8 J9 I: F2 f2 ~6 V+ I& E% bCONFIG                 += incrementar gdb_dwarf_index  1 d6 B3 N- Y( V/ L1 r- u
QMAKE_INCREMENTAL_STYLE = sublib  
# j6 q4 b) c' Q0 }5 bQT_QPA_DEFAULT_PLATFORM = linux #eglfs  
7 r$ r- _0 K7 H2 ~7 ]9 J. TQMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a    $ b7 F0 t0 [# x2 q; f4 X: L' }7 D
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a   
8 R, n8 K" S& x1 B+ ~  # [; j. F1 {& q; [
include(../common/linux.conf)  & j7 \) w1 a  o4 w  z9 r+ _
include(../common/gcc-base-unix.conf)  
+ s3 }: C& E7 F. w( pinclude(../common/g++-unix.conf)  
# G. w# k, y; z4 V2 ]  
' {7 k- ?/ l/ c7 w$ ~# modifications to g++.conf  * w1 G2 x2 ?' b. p: d9 q; I
QMAKE_CC                = arm-none-linux-gnueabi-gcc  ! @9 V! U+ S+ A, r5 K- r
QMAKE_CXX               = arm-none-linux-gnueabi-g++  
/ `) v1 |8 |: V( \8 r; O  zQMAKE_LINK              = arm-none-linux-gnueabi-g++  3 C" C8 O2 d3 G& Z6 Z# [3 b
QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++  
# b6 \: g* v& {, a& L) l0 i; c  / m, I" c9 S* n, @
# modifications to linux.conf  
0 W$ F1 _. z# _4 ~% E% }QMAKE_AR                = arm-none-linux-gnueabi-ar cqs  
8 E4 j$ y: O; i8 P' N. r8 I, RQMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy  $ h3 o: W! f1 x3 A' m( F
QMAKE_NM                = arm-none-linux-gnueabi-nm -P  
6 {' z0 u) D+ o# c. F: d" IQMAKE_STRIP             = arm-none-linux-gnueabi-strip  6 w) G6 K" ]' I6 ~! \+ b4 u: ?
load(qt_config)  
! Q: y* s2 m; c8 W" D; i' Z0 U4 ?# o
0 H* o$ n  |# u' G, X
然后执行:
3 |2 b% p. w1 Z0 N+ x: R1 y[html] view plain copy
* s; t& c; I. X9 ?! A$ ./configure -release -opensource -xplatform linux-arm-gnueabi-g++ -prefix /opt/Qt-5.3.2/armv7-a -no-c++11 -qreal float  
1 f$ b- `! T4 ~: r$ p5 U1 X配置结果为:
; Q- b/ b& ]" @" `; @' ~
9 ^5 X7 j) x; U: D- y0 k[html] view plain copy1 d  b/ K$ F3 i+ U8 p8 R* |/ B) j
   Configure summary  7 [1 w+ y8 `5 C: K
  
, c0 {5 T( r- `+ m# k+ G. gBuilding on:   linux-g++ (i386, CPU features:)  8 t  m+ s( D+ ?( q5 W$ c# Q' G/ A
Building for:  linux-arm-gnueabi-g++ (arm, CPU features:)  
! ~. A7 F6 i7 ^" `Platform notes:  3 J* S" A; \7 J7 V6 H6 E/ i% f( a. K3 f
  $ P- s- P4 ^8 F
            - Also available for Linux: linux-kcc linux-icc linux-cxx  8 i. n8 f' j3 Y; I" R; E
         
" \) ]6 R! q* i0 I/ V, X' FBuild options:  " E3 D. f9 |3 M' \' X
  Configuration .......... accessibility alsa audio-backend clock-gettime clock-monotonic compile_examples concurrent cross_compile evdev eventfd freetype full-config getaddrinfo getifaddrs iconv inotify ipv6ifname large-config largefile linuxfb medium-config minimal-config mremap nis no-harfbuzz no-pkg-config openssl pcre png posix_fallocate precompile_header qpa qpa reduce_exports release rpath shared small-config system-jpeg system-png system-zlib   
& y  d% n: ^2 h  Build parts ............ libs examples  
# T6 M; h: K& u2 q" Y# X  c: N, K  Mode ................... release  7 N8 R1 A( z. c. o5 M" _/ l
  Using C++11 ............ no  ! C" O0 m' _2 D2 F8 V+ E
  Using PCH .............. yes  
* c7 f( n* ^; ]% z- Z5 R: L  Target compiler supports:  
  P" t. J3 l, B  i    iWMMXt/Neon .......... no/auto  5 v! k' r+ d* B. K( b8 Z
  7 N7 }3 \; S2 L' w! I
Qt modules and options:  
6 ]! w) J% v( a9 D6 l: k  m' Z  Qt D-Bus ............... no  
" ^* R3 o+ ~% S& ~# \8 ?  Qt Concurrent .......... yes  
. m: e- G/ W3 `5 w  Qt GUI ................. yes  
# I- L& Y# _+ x  Qt Widgets ............. yes  5 z$ V0 v6 ?0 `$ c  D  W4 v
  Large File ............. yes  - X5 M$ K5 g& x
  QML debugging .......... yes  
9 Z5 ^* D* x& W6 t9 @% s  Use system proxies ..... no  
, B, g, i2 y! m2 d8 W  1 d6 A& A3 d2 n6 }6 z7 G
Support enabled for:  
+ ~- |9 s/ e- [' [' Q, K  Accessibility .......... yes  & R. @0 X2 `) K3 _, Q; `
  ALSA ................... yes  . v2 D' D0 [. D- Q
  CUPS ................... no  9 F: \; Q9 p1 A) ]! I7 b
  Evdev .................. yes  
3 Q" i! j( ^6 o  FontConfig ............. no  
6 }& E( L6 z# P  N1 l9 r  FreeType ............... yes (bundled copy)  
4 J: y( F3 a8 L  Glib ................... no  
3 j7 ~$ {7 G/ c/ V/ z6 s  GTK theme .............. no  
" m' k& j# D1 A+ F  HarfBuzz ............... no  ! v/ W2 \) z4 z0 l5 u$ i, ^
  Iconv .................. yes  + b# X- S: A1 P
  ICU .................... no  
& l  N" \/ Q, N- k9 G  Image formats:   
1 g# E5 K; }! @% U( B) h; }- M/ b    GIF .................. yes (plugin, using bundled copy)  9 ?- n9 }: v4 `" a; a6 K
    JPEG ................. yes (plugin, using system library)  
. m& T$ h; O. l  E0 t) n' ]% \/ p    PNG .................. yes (in QtGui, using system library)  
( I  G' @# v# m  S) Y  journald ............... no  8 ~5 l# j$ J" G5 z0 z) l( m
  mtdev .................. no  
: e4 ?0 r9 s7 v, Y( ?  Networking:   
4 O# T' E7 y6 F: O    getaddrinfo .......... yes  
* T- G9 H5 n4 \$ x5 t    getifaddrs ........... yes  
, Y3 p4 I* S: M5 Z$ q" e( Y    IPv6 ifname .......... yes  4 z6 K2 d, k9 c' j7 \; x
    OpenSSL .............. yes (loading libraries at run-time)  * P2 x5 ^- w$ I- X" ?
  NIS .................... yes  9 @8 p+ C; {2 m
  OpenGL / OpenVG:   6 I$ |# ?) z9 R/ n% X) d" n# I' ^
    EGL .................. no  
% |9 b2 p. m6 S    OpenGL ............... no  9 ], c7 Y, S* ]
    OpenVG ............... no  
2 @! H% n) s) I6 Z) t, t  PCRE ................... yes (bundled copy)  
. U8 \# x, H" x+ g% b  pkg-config ............. no   
! ]4 t; {5 p) Z# p; v; N- T  PulseAudio ............. no  
. U. L; ^- B, Q  QPA backends:   
1 H0 f9 Q5 |3 i! w+ y    DirectFB ............. no  
# L7 M  J' g  p" L0 {- @2 V- N' u# w    EGLFS ................ no  ) g/ l4 I% v+ k1 M
    KMS .................. no  # r, Z" z$ c3 N; z7 X
    LinuxFB .............. yes  # K& n, c: G4 ~- k! f
    XCB .................. no  3 f6 a- `- R& J1 g/ d( s
  Session management ..... yes  
8 u) E$ t6 ]4 r6 T, t  SQL drivers:   & P0 \) B7 o: y- F4 f8 K+ }
    DB2 .................. no  2 c) Z6 W% ?% p& N/ M( B0 ^$ [. Y1 c
    InterBase ............ no  
+ h  `" e( b. `" \/ q# W, _  o    MySQL ................ no  8 N7 c5 {8 f; H
    OCI .................. no  
1 H- D# r' G* t1 U: C    ODBC ................. no  ) N! R  Q/ }: S" f
    PostgreSQL ........... no  . O& a1 n$ h7 L& ]6 f
    SQLite 2 ............. no  
% L3 L( m' W% s$ y1 K: y+ g4 V    SQLite ............... yes (plugin, using bundled copy)  3 K7 |0 T% J! O& z1 L
    TDS .................. no  
  j+ w- d2 Q1 N3 Z0 \. |  udev ................... no  
, B7 A7 |+ c8 U- T  xkbcommon .............. no  
3 Y4 i( D: H% z3 N: `8 n  zlib ................... yes (system library)  % J* v  @" ?  p

' m. p5 y8 P, x9 g$ J# t  N7 \; B: ?% _
配置完成后执行:& V2 b" O, b4 H* m* T: H, z
[html] view plain copy
3 E! C5 g9 K/ R4 g% j4 {: a! F$ make -j4  ) E/ H4 ?2 s8 H/ h7 C
$ sudo make install -j4  
4 d. o% Z/ @5 ~0 c! ?# I7 S/ b; g8 T" }  ]; K# B
3   添加 tslib 支持; E8 g; q9 _9 Z$ }( ]
为了使单点触摸屏可用,还需要编译Qt的tslib插件,这需要首先交叉编译好tslib,tslib的编译过程参见:: d2 k8 D# E+ G+ U: W6 x6 S1 m
% M! t, k+ c7 T9 _: u9 R  d' m# m$ J
http://blog.csdn.net/newthinker_wei/article/details/8639276
3 `+ B9 z; f6 }4 C& \' I/ x友善之臂的板子使用了 touchscreen-1wire,这需要按照上文中的步骤对tslib的源码打上补丁(在tslib的源码中添加了一个一线触摸屏的插件)。非友善之臂的板子一般不用打补丁。
$ `% v( H1 e2 g2 `8 I. |7 F% Z0 t5 ^7 M7 P5 {7 R# X
另一个有用的链接在这儿,这是友善专门为tslib做的一线触摸屏的插件,有源码,上面那篇文章应该也是参考这个源码的:
) c; K, n; e$ u% r
9 N: ^4 f9 M' ]6 q! U3 t+ Ohttp://www.arm9home.net/read.php?tid-16105.html
( A. |0 q( L! z! ^
' p  a0 w9 z$ P, W$ n! H, s  [# c注意,对于友善之臂的开发板,如果使用的是单点电阻触摸屏,使用上面的方式移植tslib就可以了。但是对于多点的电容触摸屏,上面的两个网址给出的源码都不适用了,友善的多点触摸屏使用的是goodix公司出的触摸屏,goodix驱动的接口跟友善之前用的触摸屏不一样。因此如果想使用tslib,需要再单独为goodix写个TSLIB插件。tslib源码的plugins目录中就是各个插件的代码,可以参考一下他们,都很简单(主要是实现一个read函数)。但要自己写电容屏的插件貌似比较困难,因为要对驱动程序中多点触摸的数据协议有所了解,这样才能从电容屏的数据中提取出单点数据。友善提供了friendlyarm-ts-mtinput.so 文件(但并没有源码),该文件就在友善自带的tslib中,默认目录为/usr/lib/ts/friendlyarm-ts-mtinput.so。把这个库拷贝到自己编译的tslib插件目录中,再修改配置文件ts.conf,即可使tslib工作。
7 q5 Q1 T3 M$ G将编译出来的tslib拷贝到库开发板后,还需要在板子上设置TSLIB的环境变量,主要的几个变量如下:
/ y- Q4 p' I, Q
9 U) B& d2 P8 u" I) L[html] view plain copy1 a8 @/ ^, L! j( z
#! /bin/sh  ' z: p5 B& C. U6 M) _
# "source" this file when wanna run a Qt application on the ARM Board.  + h+ I, ^. q: }+ z; B  a
  # R  N/ r+ e2 e0 L
###############  the below lines are for stardard TSLIB ##################    x: g1 u, J5 Q: H
export TSLIB_ROOT=/opt/tslib  
7 \  T" u+ h+ g  e! x9 Y" I$ mexport TSLIB_CALIBFILE=$TSLIB_ROOT/etc/pointercal    u* b; Y! ~& P, P4 s& T6 t
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf  
8 s" R4 T* J0 k: P  Q0 Yexport TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts  
7 F& O' ^, x* q  ~0 v& Qexport TSLIB_TSDEVICE=/dev/touchscreen-1wire  
! h- N; L  ?7 o* Q/ N2 g8 E#export TSLIB_TSDEVICE=/dev/input/event2  * N, E0 \; d! M" g) e2 U
  , S2 e% v$ @- u* P; K& \9 d
################  the below lines are optional ##############  
- K* y+ Q; i9 s; d+ W: V0 d#export TSLIB_FBDEVICE=/dev/fb0  
- f* Y, D7 K, i) n  X* c#export TSLIB_CONSOLEDEVICE=none  7 B* I% p/ p9 n* m7 t7 n
3 J6 l! B6 V0 Y3 ?; H. S
此外还要修改 ts.conf文件:+ L9 w  _; p. |" F9 G
[html] view plain copy% \, e  L) C7 f
#module_raw one_wire_ts_input  0 M1 Z) T0 v5 s7 ^9 `+ {" @% x
module_raw friendlyarm-ts-mtinput #使用友善提供的电容屏TSLIB插件。需要先将friendlyarm-ts-mtinput.so拷贝到TSLIB_PLUGINDIR目录中  
4 @  K; g7 f) q; p8 t" z  
% l4 U6 A* W7 P% tmodule pthres pmin=1  ( Z/ g- \, a5 \& a; Z, O$ D
module variance delta=30  + _" `: G  \& ?/ ^
module dejitter delta=100  
0 J0 p5 B! e4 D3 n& G; Imodule linear  
- r& X" ?* W" g) b到此为止 tslib 就基本能用了,首次使用时应先运行 ts_calibrate 进行触摸屏校准。我用的这个版本的tslib自带的ts_calibrate程序不太好用,所以我依然使用友善提供的ts_calibrate进行校准。
/ r$ |+ P1 p9 ]有了tslib后,进入Qt源码目录中的 "qtbase/src/plugins/generic/tslib/",运行 qmake 生成 Makefile,并在Makefile中将tslib的头文件和库文件路径添加到编译链接选项中(-I /...tslib/include  -L/.../tslib/lib);然后运行 make 和 make install即可。这时,Qt5安装目录的 "plugins/generic/"目录下就出现"libqtslibplugin.so"这个库文件了。; l5 |4 j& F  i
/ {; A: F$ k2 {
4   运行Qt程序1 ]; W% g" H5 H; m) G
需要说明的是,Qt5.0开始,Qt自身不再单独实现窗口系统,QWS不复存在,取而代之的新机制是QPA(Qt平台抽象),QPA使得Qt对不同平台的支持变得更加灵活,当需要支持一个新平台时,只需为该平台编写一个QPA插件。
+ m! |; o3 M0 U6 V1 J6 _9 g$ w, Q4 e% {
With the release of Qt 5.0, Qt no longer contains its own window system implementation: QWS is no longer a supported platform. For single-process use cases, theQt Platform Abstraction is a superior solution......参考 http://qt-project.org/doc/qt-5/embedded-linux.html
/ i7 f7 N. V* _5 N: w: _4 }' @% k& [! _% a7 g7 c
编译完Qt后,只需将生成的lib和plugins文件夹拷贝到开发板,另外,当在嵌入式Linux平台上运行应用程序前,应根据自己平台的实际情况提前设置好下面几个环境变量:5 A! n9 k) u6 n) g$ l/ L- {
! v, u  M# G3 L8 l* ?
[html] view plain copy
* T3 `. U: ]9 ~) c: lexport QT_QPA_PLATFORM_PLUGIN_PATH=/opt/Qt-5.3.2/armv7-a/plugins/platforms  
9 E- c( i1 p- k; \/ X5 t0 zexport QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0  ) l$ z" {, G7 T/ C( C& E# u, K3 h
export QT_QPA_FONTDIR=/opt/Qt-5.3.2/armv7-a/lib/fonts  
" a# A: b+ y4 K3 B* Hexport QT_QPA_GENERIC_PLUGINS=tslib:/dev/touchscreen-1wire  #使用tslib插件  3 H  E7 q3 O& z* l
( `' Q/ r+ [& S9 n3 o
然后就可以运行Qt程序了% o8 m& x, {7 q" ?

2 @" r4 c0 C6 l6 t; g; T; x5 }1 t以前Qt4的程序在嵌入式Linux平台运行时,需要在命令行输入-qws选项以启动Qt窗口系统服务,如" ./HelloWorld -qws";而使用Qt5后,不再需要-qws,而需要通过-platform来指定要使用的QPA插件,如" ./HelloWorld -platform linuxfb",如果不指定,则用默认的QPA插件,默认的QPA插件通过上面的QT_QPA_PLATFORM变量指定。
, T; x6 H5 f: B* x% g  p6 ?8 [
; d3 K# g; H  H: e- Z8 E: r附: 在Ubuntu 14.04上编译Qt ---(请注意,本小节编译的是PC版Qt,不是ARM版,ARM版Qt的编译过程请参考本文第2节)2 Z3 |6 t$ b) b7 T. U
在Ubuntu 14.04上编译Qt就简单多了,缺少的组件可以很容易下载到。
9 Q/ `! n' f1 _+ z! x4 d3 y( b& X: t
首先安装opengl支持(mesa3d),
( r9 D( T& w7 X9 S( ]) Q" R; F- E
[html] view plain copy
  y. O+ l( A, C2 B' k4 Usudo apt-get install mesa-common-dev  libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev  ) _8 P, H& E7 l2 V8 W
如果需要,再安装Qt D-Bus的支持。
  H% d# b3 ]" m: c* U4 {% _1 }$ X; h1 v8 w- ~8 \& G& w- r
然后configure,configure过程中可能出现一些错误,基本都是缺少某个库引起的,配置过程中根据错误提示,用apt-get install或Ubuntu Software Center搜索安装缺少的组件。8 b) M* a. {. G3 e

: ~3 J; _' K/ P0 w. r& v- }7 M+ y6 Y[html] view plain copy
- G: s8 \; A8 q6 T3 s5 D) _' b./configure -release -opensource -prefix /opt/Qt-5.3.2/x86 -no-c++11 -qreal float -opengl  ( A2 j4 `/ M* M+ w
配置结果为:
( v9 x/ s# l$ w* r1 F
2 ~& q+ N: H  q3 n9 x+ p[html] view plain copy
* s: F$ R1 |! |9 e9 s/ q1 h+ X' x   Configure summary  ; c' h8 P- s. k$ h: [9 ]( o
  / L0 X0 X& a) h- F! @
Build type:    linux-g++ (i386, CPU features:)  ; @3 S& s# C. ]: L! Q
Platform notes:  
- f, u$ w4 U3 _/ ~5 |3 g% W  
* X: r1 O0 q7 L( }4 d9 T) b. R) |/ j            - Also available for Linux: linux-kcc linux-icc linux-cxx  6 ^5 t4 U: m* S/ P
          " l3 p1 y  L7 E% F0 m* `8 r
Build options:  ( q5 C5 K2 o) g8 f8 f1 F
  Configuration .......... accessibility accessibility-atspi-bridge audio-backend avx avx2 clock-gettime clock-monotonic compile_examples concurrent dbus evdev eventfd fontconfig full-config getaddrinfo getifaddrs glib iconv inotify ipv6ifname large-config largefile libudev linuxfb medium-config minimal-config mremap nis no-harfbuzz opengl pcre png posix_fallocate precompile_header qpa qpa reduce_exports reduce_relocations release rpath shared small-config sse2 sse3 sse4_1 sse4_2 ssse3 system-freetype system-jpeg system-png system-zlib xcb xcb-glx xcb-plugin xcb-render xcb-sm xcb-xlib xinput2 xkbcommon-qt xlib xrender   
# y6 r! ?" T# h  Build parts ............ libs tools examples  % J8 V6 }9 x3 P& R. {2 V% l
  Mode ................... release  
" z- e3 v8 t2 A( o: u* A5 j: G# e  Using C++11 ............ no  
3 M/ Y2 R# ^$ W7 e4 z: U  Using PCH .............. yes  ) N$ w$ T8 w5 d
  Target compiler supports:  * i, L+ \6 w& p. ~, m' g' T+ V
    SSE2/SSE3/SSSE3 ...... yes/yes/yes  5 x& @9 @& Y$ |9 U1 M* k* y
    SSE4.1/SSE4.2 ........ yes/yes  , b* L+ T  \: Z- n0 Q
    AVX/AVX2 ............. yes/yes  8 g. i" H6 j1 X% @+ M+ f/ J9 p; b
  " X" x( u/ l6 ?$ C" c
Qt modules and options:  0 \) G4 o7 `# b" n  }! n' B# \
  Qt D-Bus ............... yes (loading dbus-1 at runtime)  
  j  D7 I- j9 l( S3 z7 g  Qt Concurrent .......... yes  
3 T& G& a2 X3 r; F; m2 J! k  Qt GUI ................. yes  
/ t/ h' I) f6 f8 E+ I( B  Qt Widgets ............. yes  
! y9 E9 Q; W( ~* s, E+ ]6 ^. N  Large File ............. yes  
! F0 y1 R7 o) _9 w; D% V- X3 V) H  QML debugging .......... yes  
/ W7 M9 `1 r9 ~7 p  `: X  Use system proxies ..... no  % l! b3 i  O5 W/ [. `* }
  ; Y% J) ]  Z5 Z
Support enabled for:  
% o$ [" \3 U: E) P# N  Accessibility .......... yes  " J+ |+ w! ^, O  c
  ALSA ................... no  ) ~  @) P2 _! e. c' w) U
  CUPS ................... no  
( y5 b2 X  [  y  Evdev .................. yes  + B% E( s! i+ H. A; O- ?. B8 k
  FontConfig ............. yes  5 b$ G5 b- h: Z7 D5 i4 Q5 G8 v
  FreeType ............... yes (system library)  " k+ ]6 w7 x3 x7 m& T2 Y1 ]% r
  Glib ................... yes  
* Z$ L9 q* a% F3 v, U6 B3 `5 A! k  GTK theme .............. no  8 q3 U% g2 B4 D0 v3 g
  HarfBuzz ............... no  
9 d+ @" _7 A" e, i, y5 h) X8 e  Iconv .................. yes  
: F( E( q/ d0 T' k  ICU .................... no  9 F: ~8 U9 m% Z9 L$ g( g0 W6 X8 B4 R
  Image formats:   1 u+ w& K5 V1 J0 d
    GIF .................. yes (plugin, using bundled copy)  
8 T$ m; l8 u" Q1 p1 i9 s" U+ u, G    JPEG ................. yes (plugin, using system library)  " J# ?0 a5 a, r4 ^$ e
    PNG .................. yes (in QtGui, using system library)  
8 {$ n2 @3 D- t2 l- S8 D% W% i  journald ............... no  % R* d: \+ }9 y0 a
  mtdev .................. no  
7 ~$ ?6 y% M7 W  e& r" v& G- y  Networking:   9 e" d# M8 u; w& _5 x( [
    getaddrinfo .......... yes  
* l1 |6 m* \- z7 w    getifaddrs ........... yes  
" u, G$ w) p6 b% [9 N3 k! w# ?7 _    IPv6 ifname .......... yes  
/ {) V2 c" ?: [6 i0 G    OpenSSL .............. no  * S% ?% R7 l* a: @( i
  NIS .................... yes  
& a0 O5 F- q4 w0 E! o1 v1 t# o  OpenGL / OpenVG:   5 L& @) X6 D7 g  g9 a  f
    EGL .................. no  
* N2 k( V7 Z& ]1 y/ }9 B1 ]# b    OpenGL ............... desktop    C5 Q' R% g$ K' w  |; k  e3 a
    OpenVG ............... no  ) X% J$ z7 U; P" R. U) d+ g
  PCRE ................... yes (bundled copy)  
2 J; @6 D5 W% g; v9 t& w: \  pkg-config ............. yes   
+ ?# r6 X- H% r: A) Z. G; _  PulseAudio ............. no  9 A: |; _2 [! U9 }4 A
  QPA backends:   
0 D1 m- Q* m, P4 U( q    DirectFB ............. no  
4 b- ^4 W/ J6 \% m# ?) b    EGLFS ................ no  . z7 e$ {& M( O
    KMS .................. no  1 \6 n+ ?2 w1 i, y9 @
    LinuxFB .............. yes  
* b4 l+ }6 {/ U7 U( s# L; I    XCB .................. yes (system library)  # S) f5 [! t# |3 Y$ N) ~
      EGL on X ........... no  2 D4 h- ?, k% a3 @
      GLX ................ yes  ' v; ~# t6 z9 g6 r( W( h
      MIT-SHM ............ yes  3 U' V' _1 X6 u" G2 f
      Xcb-Xlib ........... yes  
2 ^( R8 f# x, h1 ]2 C* ?  x" u" N      Xcursor ............ yes (loaded at runtime)  6 S4 A4 H: b8 x/ d8 t1 S
      Xfixes ............. yes (loaded at runtime)  
! o  O& i+ J2 z      Xi ................. no  
2 A# R8 Z8 B8 V6 O0 r      Xi2 ................ yes  
9 S% L- |% s& ~" x" P! {      Xinerama ........... yes (loaded at runtime)  : Z% g5 R4 X" Q+ |
      Xrandr ............. yes (loaded at runtime)  4 l4 a3 F+ G8 d8 [; V1 ]7 N
      Xrender ............ yes  3 x0 {& c6 x8 V" v, y8 M$ j
      XKB ................ no  4 R5 j5 a2 w( o# q  G
      XShape ............. yes  
8 j* [% c# s4 U5 M- z% L" u. J$ I      XSync .............. yes  
0 i& I" q& ~4 v# w      XVideo ............. yes  
: l' B) @8 w8 o1 Z- k  Session management ..... yes  
) p1 L! J4 G' g0 E! W0 U  SQL drivers:   
& T  z' Z9 j* \. q    DB2 .................. no  ; ?, M, `2 J. Z0 q. L' Y
    InterBase ............ no  
8 T3 k- R) @- [% S# S/ |    MySQL ................ no  ' o6 D" M0 H$ R' R+ V% n( m
    OCI .................. no  
6 i$ s1 |2 K8 L$ @4 v    ODBC ................. no  3 I  ~- I. d2 g
    PostgreSQL ........... no  . C% D" r/ \* z
    SQLite 2 ............. no  ( y7 i4 F. w! Y. o" `6 n/ d
    SQLite ............... yes (plugin, using bundled copy)  $ G9 J' V/ R5 Z
    TDS .................. no  
  L- i# k; }! i  udev ................... yes  3 ]; K1 I- i0 x! C; o" X
  xkbcommon .............. yes (bundled copy, XKB config root: /usr/share/X11/xkb)  6 J, Q: ^2 M- @
  zlib ................... yes (system library)  * [* w8 w$ L0 I; K$ V
  
  G" U  }% ~- g+ {6 D4 _3 z$ S$ xNOTE: libxkbcommon and libxkbcommon-x11 0.4.1 or higher not found on the system, will use   % l  c! |) b! @
the bundled version from 3rd party directory.  & U6 V7 i! A/ P) ?( D
- V' s7 g7 B$ B/ K! Z) ]" i2 M
最后make和make install即可。
. A3 J* k. P  m: d/ h; `! N$ I) p
1 e0 r' B! {3 k& |
另外,编译完Qt5.3.2后,发现Qt assistant打开之后内容是空的,查询不到任何东西。需要打开assistant,点击Edit->preference菜单,选择Documents选项卡,点击add向assistant添加文档,文档类型为 *.qch 。但Qt5中似乎文档并不是现成的,需要在编译完Qt后再去编译他的文档。步骤为:
5 L2 @5 I4 _" ?2 E+ _; ^% U
4 w5 u* A/ ]) O% j进入已经编译过的Qt源码顶层目录,输入
7 m0 |" A8 M) Z0 b[html] view plain copy
0 x  G4 ~9 \: h, L8 d% V$ make docs  3 `* Z# J/ M9 f1 m
这条指令会生成Qt各个模块的文档,但这些文档分散于不同的子源码目录中,最好将他们集中拷贝出来放到Qt的安装目录中,我的做法如下,当执行完make docs后,在源码顶层目录输入:(/opt/Qt-5.3.2是我的安装目录)  w& n" Q- f- M& ?+ q' b/ h
[html] view plain copy
1 Z7 @: U4 z) f. \  ^& D( }/ o7 j$ sudo mkdir /opt/Qt-5.3.2/docs_for_assistant  
4 b  l' k+ T" I+ v. i; T+ W$ sudo cp `find ./ -name *.qch` /opt/Qt-5.3.2/docs_for_assistant  8 O9 H8 Y  J" Z* X* e% y- H+ t( d
然后打开assistant,将 /opt/Qt-5.3.2/docs_for_assistant 目录中的*.qch文件全部add进去。

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-12-14 06:53 , Processed in 0.033380 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表