1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
|
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** GNU Free Documentation License
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms
** and conditions contained in a signed written agreement between you
** and Nokia.
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
/*!
\group platform-specific
\title Platform-Specific Documentation
\brief Documents describing platform-specific features of Qt.
These documents describe platform-specific features provided by Qt, and
discuss issues related to particular platforms and environments.
\generatelist{related}
*/
/*!
\page platform-notes.html
\ingroup platform-specific
\title Platform and Compiler Notes
\brief Information about the platforms on which Qt can be used.
This page contains information about the platforms Qt is currently known
to run on, with links to platform-specific notes, including any known bugs
or incompatibilities.
Information about the combinations of platforms and compilers
supported by Qt can be found on the \l{Supported Platforms} page.
\list
\o \l{Platform and Compiler Notes - X11}
\tableofcontents{1 Platform and Compiler Notes - X11}
\o \l{Platform and Compiler Notes - Windows}
\tableofcontents{1 Platform and Compiler Notes - Windows}
\o \l{Platform and Compiler Notes - Mac OS X}
\tableofcontents{1 Platform and Compiler Notes - Mac OS X}
\o \l{Platform and Compiler Notes - Symbian}
\tableofcontents{1 Platform and Compiler Notes - Symbian}
\o \l{Platform and Compiler Notes - Embedded Linux}
\tableofcontents{1 Platform and Compiler Notes - Embedded Linux}
\o \l{Platform and Compiler Notes - Windows CE}
\tableofcontents{1 Platform and Compiler Notes - Windows CE}
\o \l{Platform and Compiler Notes - QNX}
\tableofcontents{1 Platform and Compiler Notes - QNX}
\o \l{Platform and Compiler Notes - VxWorks}
\tableofcontents{1 Platform and Compiler Notes - VxWorks}
\endlist
\section1 General Compiler Notes
\section2 Supported Features
Not all compilers used to build Qt are able to compile all modules. The following table
shows the compiler support for five modules that are not uniformly available for all
platforms and compilers.
\table
\header \o Compiler \o{5,1} Features
\header \o \o Concurrent \o XmlPatterns \o WebKit(*) \o CLucene \o Phonon
\row \o g++ 3.3 \o \o \bold{X} \o \o \bold{X} \o \bold{X}
\row \o g++ 3.4 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
\row \o SunCC 5.5 \o \o \o \o \bold{X} \o \bold{X}
\row \o aCC series 3 \o \o \o \o \bold{X} \o \bold{X}
\row \o aCC series 6 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
\row \o xlC 6 \o \o \o \o \bold{X} \o \bold{X}
\row \o Intel CC 10 \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
\row \o MSVC 2003 \o \bold{X} \o \bold{X} \o \o \bold{X} \o \bold{X}
\row \o MSVC 2005 and up \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X} \o \bold{X}
\endtable
* WebKit is only supported as a dynamically built library. Static linkage is not supported.
\section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64)
This compiler is known to miscompile some parts of Qt when doing a
release build. There are several workarounds:
\list 1
\o Use a debug build instead.
\o For each miscompilation encountered, recompile the file, removing the \c{-O2} option.
\o Add \c{-fno-gcse} to the
\l{qmake Variable Reference#QMAKE_CXXFLAGS_RELEASE}{QMAKE_CXXFLAGS_RELEASE} qmake
variable.
\endlist
\section2 GCC 4.0.0
The released package of the compiler has some bugs that lead to
miscompilations. We recommend using GCC 4.0.1 or later, or to use
a recent CVS snapshot of the GCC 4.0 branch. The version of GCC
4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work
with Qt for Mac OS X.
\section2 Intel C++ Compiler
Qt supports the Intel C++ compiler on both Windows and Linux.
However, there are a few issues on Linux; see
\l{Platform and Compiler Notes - X11#Intel C++ Compiler for Linux}{Intel C++ Compiler for Linux}
for details.
\section1 Feedback and Corrections
If you have anything to add to this list or any of the platform or
compiler-specific pages, please submit it via the \l{Bug Report Form}
or through the \l{Public Qt Repository}.
*/
/*!
\page platform-notes-x11.html
\title Platform and Compiler Notes - X11
\contentspage Platform and Compiler Notes
This page contains information about the X11 platforms Qt is currently
known to run on, with links to platform-specific notes. More information
about the combinations of platforms and compilers supported by Qt can be
found on the \l{Supported Platforms} page.
\tableofcontents
\target AIX
\section1 AIX - 5.2
Qt has been tested on AIX 5.2, using the xlC compiler.
\table
\header \o Compiler \o Notes
\row \o xlC
\o If Qt is built correctly but all symbols are reported to be missing
when you link an application, your makeC++SharedLib script might be out
of date. Make sure you have the latest version from the
\l{http://www-306.ibm.com/software/awdtools/vacpp/support/}{IBM website}.
\row \o GCC
\o We have tested earlier versions of Qt 4 successfully with GCC version
3.3 and above. Some versions of GCC may fail to link Qt with a "TOC overflow"
message.
Fix this by upgrading to the latest maintenance release of the dynamic
linker. On AIX this is bos.rte.bind_cmds.4.1.5.3 or later.
Some versions of GCC may fail to build Qt with STL and large-file support
enabled, due to
\l{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9551}{a bug in GCC}.
Fix this by upgrading to the latest maintenance release of the compiler.
It is also possible to work around this problem by running configure with
either \c{-no-stl} or \c{-no-largefile}.
\endtable
\section2 IBM xlC
The makeC++SharedLib utility must be in your PATH and be up to date to
build shared libraries. From IBM's
\l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX}
Redbook:
\list
\o "The second step is to use the makeC++SharedLib command to create the
shared object. The command has many optional arguments, but in its
simplest form, can be used as follows:"
\snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1
\o "The full path name to the command is not required; however, to avoid
this, you will have to add the directory in which it is located to
your PATH environment variable. The command is located in the
/usr/vacpp/bin directory with the VisualAge C++ Professional for AIX,
Version 5 compiler."
\endlist
\section2 VisualAge C++ for AIX, Version 6.0
Make sure you have the
\l{http://www-1.ibm.com/support/search.wss?rs=32&tc=SSEP5D&dc=D400}{latest upgrades}
installed.
\target FreeBSD
\section1 FreeBSD - 6.0-RELEASE
\note FreeBSD is a community supported platform. See the
\l{Supported Platforms} page for more information.
The system compiler on FreeBSD 4.x is GCC 2.95.4, which is not
officially supported by Qt 4. We develop using and recommend
ports/lang/gcc34. You will need to run configure with the
\c{-platform freebsd-g++34} arguments. Optionally, you may use
ports/lang/icc.
The system compiler on FreeBSD 5.x and 6.x is GCC 3.4.4, which should be
sufficient to build Qt. You do not need to add any special arguments when
running configure. Optionally, you may use ports/lang/icc.
Note that we do not actively test FreeBSD 4.x and 5.x. Our developers
migrated to 6.x after the Qt 4 launch. FreeBSD-CURRENT is not supported.
\section1 HP-UX
Qt supports HP-UX on both PA-RISC and the Itanium (IA64) architectures.
\section2 PA-RISC - B.11.11 or later
You can configure Qt for aCC in 32 and 64 bit mode (hpux-acc-64 or
hpux-acc-32), or GCC in 32 bit mode (hpux-g++). The default platform is
hpux-acc-32. The minimum required version for aCC (HP ANSI C++) on PA-RISC
is A.03.57. The supported GCC compiler is GCC 3.4.3.
\section2 Itanium - B.11.23 or later
You can configure Qt for aCC in 32 and 64 bit mode (hpuxi-acc-64 or
hpuxi-acc-32). GCC is currently unsupported. The default platform is
hpuxi-acc-64. The minimum required version for aCC (HP ANSI C++) on
Itanium is A.06.12.
\section2 HP ANSI C++ (aCC)
The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The
hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10.
\section2 GCC
The hpux-g++ platform is tested with GCC 3.4.4.
\section2 OpenGL Support
Qt's \l{QtOpenGL}{OpenGL} module requires GLX 1.3 or later to be installed.
This is available for HP-UX 11i - see the
\l{http://docs.hp.com/en/5992-2331/ch04s02.html}{Graphics and Technical Computing Software}
section of the release notes for more information.
\target IRIX
\section1 IRIX - 6.5.x
\bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page
and Qt's Software's online \l{Platform Support Policy} page for details.}
Unpackaging and IRIX tar:
Because of long filenames some files will be cut off incorrectly with IRIX
tar. Please use GNU tar to unpack Qt packages.
\section2 MIPSpro
Qt 4.4.x requires MIPSpro version 7.4.2m.
Note that MIPSpro version 7.4.4m is currently not supported, since it has
introduced a number of problems that have not yet been resolved.
We recommend using 7.4.2m for Qt development. However, please note the
unsupported status of this platform.
\section1 Linux
There are no known problems with using Qt on production versions of
Linux/x86, Linux/ppc, Linux/amd64 and Linux/ia64 (including Altix(R)).
For the GCC compiler, please also see the relevant
\l{Platform and Compiler Notes#General Compiler Notes}{General Compiler Notes}.
\section2 Installation problems
See also the \l{Installation FAQ}.
If you experience problems when installing new open source versions of Qt
versions, try to use the open source Qt archives (e.g., RPM)
provided by your Linux distribution. If you need to install the source (.tgz)
archive, be aware that you will probably end up with two different
versions of the Qt library installed on your system, which will probably
lead to link errors, like this:
\snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 0
Fix this by removing the old version of the library.
If you have problems installing open source versions of Qt
provided by your Linux distribution (e.g., RPM), please consult the
maintainers of the distribution, not us.
Some RPM versions have problems installing some of the Qt RPM archives
where installation stops with an error message warning about a
"Failed Dependency". Use the \c{--nodeps} option to \c rpm to workaround
this problem.
\section2 Intel C++ Compiler for Linux
Nokia currently tests the following compilers:
\list
\o Intel(R) C++ Compiler for applications running on IA-32,
Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
\o Intel(R) C++ Compiler for applications running on Intel(R) 64,
Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
\endlist
We do not currently test the IA-64 (Itanium) compiler.
\section2 Known Issues with Intel C++ Compiler for Linux
\list
\o Precompiled header support does not work in version 10.0.025
and older. For these compilers, you should configure Qt with
-no-pch. Precompiled header support works properly in version
10.0.026 and later.
\o Version 10.0.026 for Intel 64 is known to miscompile qmake when
building in release mode. For now, configure Qt with
-debug. Version 10.1.008 and later can compile qmake in release
mode.
\o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are
known crash with "(0): internal error: 0_47021" when compiling
QtXmlPatterns, QtWebKit, and Designer in release mode. Version
10.1.017 compiles these modules correctly in release mode.
\endlist
\target Solaris
\section1 Solaris - 9 or later
\section2 Unpackaging and Solaris tar
On some Solaris systems, both Solaris tar and GNU tar have been reported
to truncate long filenames. We recommend using star instead
(http://star.berlios.de).
Please note that WebKit is not supported for Solaris, regardless of
which compiler is used.
\section2 CC
See the notes for \l{Forte Developer / Sun Studio}.
\section2 GCC
Please use GCC 3.4.2 or later.
Do not use GCC with Sun's assembler/linker, this will result in link-time
errors in shared libraries. Use GNU binutils instead.
GCC 3.2.* is known to miscompile Qt due to an optimizer bug that will
cause the resulting binaries to hang.
\section2 Forte Developer / Sun Studio
Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to
\l{Sun Studio Patches} page on Sun's Web site to download
the latest patches for your Sun compiler.
Please note that Qt 4.6 is stricter in its STL requirements and
that the default STL implementation used by Sun CC does not pass
those requirements. This does not affect binary compatibility and
you can continue to use STL in your own code, but Qt's
STL-compatibility functions will be disabled.
Sun CC ships with a secondary STL implementation (called stlport4)
which is standards-compliant and can be used by Qt. You can enable
it by passing the -library=stlport4 option to the compiler. Note
that this does not affect Qt's binary compatibility, but it may
affect that of other libraries and programs that use STL.
\section2 Sun WorkShop 5.0
Sun WorkShop 5.0 is not supported with Qt 4.
*/
/*!
\page platform-notes-windows.html
\title Platform and Compiler Notes - Windows
\contentspage Platform and Compiler Notes
This page contains information about the Windows platforms Qt is currently
known to run on, with links to platform-specific notes. More information
about the combinations of platforms and compilers supported by Qt can be
found on the \l{Supported Platforms} page.
\tableofcontents
\section1 Windows Vista
At the time Qt %VERSION% was released, there were no known Vista-specific issues.
\target Windows NT
\section1 Windows XP, Windows 2000 and Windows NT
\section2 Installation location
Installing Qt into a directory with spaces, e.g. C:\\Program Files, may
cause linker errors like the following:
\snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 2
Install Qt into a subdirectory without spaces to avoid this problem.
\section2 Possible GL conflict
There is a known issue with running Microsoft NetMeeting, Lotus SameTime
and other applications that require screen grabbing while direct
rendering is enabled. Other GL-applications may not work as expected,
unless direct rendering is disabled.
\section2 GCC (MinGW)
We have tested Qt with this compiler on Windows XP.
The minimal version of MinGW supported is GCC 4.4.
\note For users of the MinGW binary package: This package is now
based on MinGW 4.4. The installer no longer offers to download
MinGW for you, but rather offers to use a version of MinGW that
you already have installed on your machine. You just tell the
installer which directory MinGW is installed in. If you don't
already have MinGW 4.4 installed, you can download a .zip archive
from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip}{FTP
site}. This archive provides fixes to MinGW and support for
missing API, See the _patches directory in the archive for
details.
\note A MinGW installation is only needed to build against the
binary package, not to run the pre-compiled binaries that are in
the package.
\section2 Intel C++ Compiler (Windows, Altix)
Qt 4 has been tested successfully with:
\list
\o Windows - Intel(R) C++ Compiler for 32-bit applications,
Version 9.1.040.
\o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based
applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030
\endlist
We currently only test the Intel compiler on 32-bit Windows versions.
\section2 Visual Studio (Windows)
We do most of our Windows development on Windows XP, using Microsoft
Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit
versions).
Qt works with the Standard Edition, the Professional Edition and Team
System Edition of Visual Studio 2005.
In order to use Qt with the Visual Studio 2005/2008 Express Edition you need
to download and install the platform SDK. Due to limitations in the
Express Edition it is not possible for us to install the Qt Visual
Studio Integration. You will need to use our command line tools to
build Qt applications with this edition.
The Visual C++ Linker doesn't understand filenames with spaces (as in
\c{C:\Program files\Qt\}) so you will have to move it to another place,
or explicitly set the path yourself; for example:
\snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0
If you are experiencing strange problems with using special flags that
modify the alignment of structure and union members (such as \c{/Zp2})
then you will need to recompile Qt with the flags set for the
application as well.
If you're using Visual Studio .NET (2002) Standard Edition, you should be
using the Qt binary package provided, and not the source package.
As the Standard Edition does not optimize compiled code, your compiled
version of Qt would perform suboptimally with respect to speed.
With Visual Studio 2005 Service Pack 1 a bug was introduced which
causes Qt not to compile, this has been fixed with a hotfix available
from Microsoft. See this
\l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry}
for more information.
There currently is a problem when compiling Qt with Visual Studio 2010 for 64-bit.
Its optimizer causes trouble and generates code that crashes for the release builds.
To avoid the crashes, You need to apply the hotfix in the following article
http://support.microsoft.com/kb/2280741.
*/
/*!
\page platform-notes-mac.html
\title Platform and Compiler Notes - Mac OS X
\contentspage Platform and Compiler Notes
This page contains information about the Mac OS X versions Qt is currently
known to run on, with links to platform-specific notes. More information
about the combinations of platforms and compilers supported by Qt can be
found on the \l{Supported Platforms} page.
\tableofcontents
\section1 General Information
Qt 4.6 applications can only be deployed on Mac OS X 10.4 (Tiger)
and higher.
Qt 4.4 and Qt 4.5 development is only supported on Mac OS X 10.4 and up.
Applications built against these version of Qt can be deployed on Mac OS X
10.3, but cannot be developed on that version of the operating system due
to compiler issues.
Qt 4.3 has been tested to run on Mac OS X 10.3.9 and up. See notes on
the binary package for more information.
Qt 4.1 has been tested to run on Mac OS X 10.2.8 and up. Qt 4.1.4 is the
last release to work with Mac OS X 10.2.
\section2 Required GCC version
Apple's GCC 4 that is shipped with the Xcode Tools for both Mac OS X 10.4
and 10.5 will compile Qt. There is preliminary support for GCC 4.2 which
is included with Xcode Tools 3.1+ (configurable with
\c{-platform macx-g++42}).
Please use the latest GCC 3.3 from Apple or a later version of GCC 3.
The GCC 3.3 that is provided with Xcode 1.5 is known to generate bad code.
Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}.
\section2 Binary Package
The binary package requires that you have your .qt-license file in your
home directory. Installer.app cannot complete without a valid .qt-license
file. Evaluation users of Qt will have information about how to create
this file in the email they receive.
The binary package was built on Mac OS X 10.4 with Xcode Tools 2.1
(GCC 4.0.0) for Qt 4.1.0, Xcode Tools 2.2 (GCC 4.0.1) for Qt 4.1.1-4.1.4
and Xcode Tools 2.3 for 4.2.0. It will only link executables built
against 10.4 (or a 10.4 SDK). You should be able to run applications
linked against these frameworks on Mac OS X 10.3.9 and Mac OS X 10.4+.
If you require a different configuration, you will have to use the
source package and build with GCC 3.3.
\section2 Mac OS X on Intel hardware
Qt 4 fully supports both the Intel and PowerPC architectures on the Mac.
As of Qt 4.1 it is possible to support the Intel architecture by
creating Universal Binaries with qmake. As of Qt 4.1 it is possible to
build Qt as a set of universal binaries and frameworks from configure by
adding these extra flags:
\snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 3
If you are building on Intel hardware you can omit the sdk parameter, but
PowerPC hardware requires it.
You can also generate universal binaries using qmake. Simply add these
lines to your .pro file:
\snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 4
\section2 Build Issues
If Qt does not build upon executing make, and fails with an error message
such as
\snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 5
this could be an indication you have upgraded your version of Mac OS X
(e.g. 10.3 to 10.4), without upgrading your Developer Tools (Xcode Tools).
These must match in order to successfully compile files.
Please be sure to upgrade both simultaneously. If problems still occur,
contact support.
\section2 Fink
If you have installed the Qt for X11 package from \l{Fink},
it will set the QMAKESPEC environment variable to darwin-g++. This will
cause problems when you build the Qt for Mac OS X package. To fix this, simply
unset your QMAKESPEC or set it to macx-g++ before you run configure.
You need to have a fresh Qt distribution (make confclean).
\section2 MySQL and Mac OS X
There seems to be a issue when both -prebind and -multi_module are
defined when linking static C libraries into dynamic library. If you
get the following error message when linking Qt:
\snippet doc/src/snippets/code/doc_src_platform-notes.qdoc 6
re-link Qt using -single_module. This is only a problem when building the
MySQL driver into Qt. It does not affect plugins or static builds.
\section2 Qt and Precompiled Headers (PCH)
Starting with Qt 3.3.0 it is possible to use precompiled headers. They
are not enabled by default as it appears that some versions of Apple's
GCC and make have problems with this feature. If you want to use
precompiled headers when building the Qt source package, specify the
-pch option to configure. If, while using precompiled headers, you
encounter an internal compile error, try removing the -include header
statement from the compile line and trying again. If this solves the
problem, it probably is a good idea to turn off precompiled headers.
Also, consider filing a bug report with Apple so that they can
improve support for this feature.
*/
/*!
\page platform-notes-windows-ce.html
\title Platform and Compiler Notes - Windows CE
\contentspage Platform and Compiler Notes
This page contains information about the Windows CE and Windows Mobile
platforms Qt is currently known to run on, with links to platform-specific
notes. More information about the combinations of platforms and compilers
supported by Qt can be found on the \l{Supported Platforms} page.
*/
/*!
\page platform-notes-symbian.html
\title Platform and Compiler Notes - Symbian
\contentspage Platform and Compiler Notes
\ingroup platform-specific
\brief Information about the state of support for the Symbian platform.
This page describes implementation details regarding the Qt for Symbian port. To get
started with application development for Symbian devices, read the \l
{http://doc.qt.nokia.com/qtcreator/creator-developing-symbian.html}
{Connecting Symbian Devices} document.
\section1 Source Compatibility
Qt for Symbian provides the same level of source compatibility guarantee as
given for other platforms. That is, a program which compiles against a given
version of Qt for Symbian will also compile against all future versions of the
same major release.
\section1 Binary Compatibility
As with every supported platform, Qt strives to maintain application
behavior and binary compatibility throughout the lifetime of the Qt 4.x
major version and on the \l {Supported Devices}{Symbian devices that support Qt}.
Symbian support in Qt SDK and Ovi Store were introduced with Qt 4.6. Each Qt
release contains bug fixes that might change the API behavior and thereby
affect application compatibility.
In addition, Symbian devices have different input methods, such as different
keyboard styles or touch input, screen sizes, memory, and CPU and GPU
capabilities. Therefore, you must test applications on specific target
devices to ensure compatibility. In order to build applications that are
supported also on earlier devices, select the target in Qt SDK carefully.
Generally, an earlier target (such as S60 5th Edition) is supported on a
larger number of devices than a later target (such as Symbian Belle).
\target Supported Devices
\section1 Supported Devices
The \l {http://developer.qt.nokia.com/wiki/support_for_Symbian}{Support for Symbian} document
details the Qt support on different Symbian devices.
The \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian#Supported_Devices}
{Nokia Smart Installer for Symbian} document lists how Qt is supported on
different Symbian devices through Smart Installer.
Qt versions are supported by Symbian devices as follows:
\list
\o Qt 4.6 is supported by S60 3rd Edition feature pack 1 and newer devices
through \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Smart Installer}.
\o Qt 4.7.3 is supported by S60 5th Edition and newer devices
through \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Smart Installer}.
\endlist
Symbian devices have a pre-installed Qt support as follows:
\list
\o Symbian Anna: Qt 4.7.3 in C: drive. Note that Qt 4.7.4 is supported in Symbian Anna
through \l {http://www.developer.nokia.com/Community/Wiki/Nokia_Smart_Installer_for_Symbian}{Smart Installer}.
\o Symbian Belle: Qt 4.7.4 in device firmware (ROM).
\endlist
\section1 Functionality Support
The following technologies and classes are not supported:
\list
\o QtConcurrent
\o QtDBus
\o \l {http://doc.qt.nokia.com/4.8/printing.html}{Printing support}
\o Qt3Support
\endlist
The following technologies have limited support:
\table
\header \o Module
\o Note
\row \o QtSql
\o The only supported driver is SQLite.
\row \o QtMultimedia
\o For support details see \l {Multimedia Support} section.
\row \o QtGui
\o QtGui's widgets are deprecated (i.e. they are available but not
recommended to use) in the Symbian port. It is recommended to use \l
{http://doc.qt.nokia.com/qt-components-symbian-1.1/symbian-components-functional.html}
{Qt Quick Components for Symbian} instead, because they provide
better look and feel on Symbian devices.
Moreover, the following classes of QtGui \bold {should not
be used} in a Symbian application:
\list
\o QFileDialog with the \c DontUseNativeDialog option
\o QColorDialog with the \c DontUseNativeDialog option
\o QFontDialog
\o QWizard
\o QCalendarWidget
\o QDateTimeEdit
\o QMdiArea
\o QDockWidget
\o QMdiSubWindow
\o QPrintPreviewWidget
\endlist
QScrollArea: The scrolling and focus handling of QScrollArea's all
scrollable widgets, for example QListView, differs from native Avkon
list widgets' one. Native Avkon scrollable components support
touch-gesture-based scrolling by dragging and flicking the UI
component but this functionality is not implemented in Qt widgets.
Scrolling by dragging and flicking works also in Qt Quick Components
that implements the \l
{http://www.developer.nokia.com/Resources/Library/Symbian_Design_Guidelines/}
{Symbian design guidelines}.
\endtable
\section1 Compiler Notes
For the application development the necessary compiler toolchain is included in \l
{http://qt.nokia.com/downloads}{Qt SDK}. For instructions compiling Qt
itself see the \l
{http://doc.qt.nokia.com/stable/install-symbian.html}
{Installing Qt for the Symbian platform} document.
\section1 Known Issues
Known issues can be found by visiting the
\l{http://qt.gitorious.org/qt/pages/QtKnownIssues}{wiki page} with an
up-to-date list of known issues, and the list of bugs can be found by
\l{http://bugreports.qt.nokia.com/browse/QTBUG/component/19171}{browsing} the
S60 component in Qt's public task tracker, located at
\l{http://bugreports.qt.nokia.com/}{http://bugreports.qt.nokia.com/}.
For information about mixing exceptions with Symbian leaves, see
\l{Exception Safety with Symbian}.
\section1 Required Capabilities
The Qt libraries are typically signed with \c{All -TCB} capabilites but
that does not mean your Qt application needs to be signed with the same
capabilities to function properly. The capabilities your application needs
to function properly depends on which parts of Qt you use.
In a Qt application Symbian capabilities are defined in the
\l {http://doc.qt.nokia.com/4.8/qmake-variable-reference.html#target-capability}
{TARGET.CAPABILITY} qmake variable in the project file.
Here is an overview for which capabilities may be needed when using different modules:
\table
\header \o Module
\o Required Symbian Capability
\row \o QtCore
\o \c PowerMgmt if QProcess::kill(...) or QProcess::terminate(...) is called.
\row \o QtCore
\o \c AllFiles when \l{http://wiki.forum.nokia.com/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.}
\row \o QtDeclarative
\o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified.
\row \o QtNetwork
\o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified.
\row \o QtNetwork
\o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list
(for example those added by the user or stored in the SIM card),
without this capability only the CA certs built into the phone are used.
\row \o QtMultimedia
\o \c UserEnvironment if QAudioInput is used.
\row \o QtWebKit
\o \c NetworkServices is automatically added for this module if no capabilities are explicitly specified.
\endtable
\note Some modules rely on other modules. E.g. QtWebkit and QtDeclarative
depend on QtNetwork and therefore any application that
depends on these modules is also likely to need \c NetworkServices capability.
For more information see the documentation of the individual Qt classes. If
a class does not mention Symbian capabilities, it requires none.
\target Multimedia Support
\section1 Multimedia Support
Qt Mobility provides a high-level API for multimedia functionality with
\l{http://doc.qt.nokia.com/qtmobility/multimedia.html}{QtMultimediaKit}.
In addition, Qt provides the low-level \l {QtMultimedia}{QtMultimedia}
module that is internally used by the QtMultimediaKit. For more information
on developing multimedia applications for Symbian devices, see
\l {http://www.developer.nokia.com/info/sw.nokia.com/id/4abf12e7-72d8-45ef-b1a2-46184abe18ba/Guide_for_Qt_Multimedia_Developers.html}
{Guide for Qt Multimedia Developers}.
Moreover, there is a third multimedia-related module called Phonon. Qt
provides two backends for the Phonon module in Symbian: \i MMF and \i Helix.
Note that Phonon is a legacy module and the QtMultimediaKit module is
replacing Phonon in Qt 5. Although Phonon is supported in Symbian for
backwards compatibility and there is no plan to remove Phonon from Symbian
any new applications should use QtMultimediaKit in Symbian using Qt 4.7
bundle. The QtMultimediaKit feature set is comparable to that in Phonon.
The following applies to Phonon:
\list
\o MMF Phonon backend supports video and sound playback through Symbian's
Multimedia Framework, MMF. Phonon's video playback may show artifacts when
the video is moved or resized (for instance, during device orientation
changes from portrait to landscape and vice versa). This problem is present
on S60 5th Edition and earlier versions, as well as in Symbian Anna devices.
\o The audio and video formats that Phonon supports depends on what support
the platform provides for MMF. The emulator is known to have limited
codec support.
\o In addition, there exists a backend for the Helix framework. However, since
it is not shipped with Qt, its availability depends on the Symbian platform
in use. If the MFF plugin fails to load, the Helix plugin, if present on the
device, will be loaded instead.
\endlist
\section1 Hardware Accelerated Rendering
The default graphics system on Symbian Anna is OpenVG, which uses OpenVG
hardware to accelerate \l QPainter functions. There are a few exceptions,
where Qt will use software rendering fallback.
Devices like the N8 and C7 only have 32Mb of GPU memory and limited support
for EGL surface transparency. These devices can be identified by querying
the\c GL_RENDERER or \c VG_RENDERER string which evaluates to \c {VideoCore III}.
On these devices, Qt will use software rendering in cases listed below.
\list
\o Translucent windows
\o Dialogs
\o Popups
\endlist
\section1 OpenGL Support in Symbian
Qt 4.7 introduces the \l {QtOpenGL} module. QtOpenGL is
supported on devices which support OpenGL ES 2.0. Symbian platforms prior
to Symbian Anna (and Symbian^3) are not supported.
\l QGLWidget usage as a \l QGraphicsView viewport is not recommended on
Symbian. The OpenVG graphics system is not able to manage OpenGL graphics
resources. Also, a QGLWidget object is not able to release its GPU resources
when the application goes to the background. If OpenGL functionality is
needed, \l { http://doc.qt.nokia.com/4.7-snapshot/qapplication.html#setGraphicsSystem}
{OpenGL graphics system} usage is recommended. If an application
decides to use QGLWidget, then it is the application's responsibility to
destroy and release QGLWidget and related OpenGL resources when the
application goes to the background. Otherwise, the \l{Graphics Out Of Memory monitor}
may decide to kill the application as it consumes GPU resources while in the
background.
\note \l QGLBuffer, \l QGLFramebufferObject, \l QGLPixelBuffer, \l
QGLShader, and \l QGLShaderProgram are direct GPU resources and it is the
application's responsibility to manage them.
\section1 UI Performance in S60 3rd and 5th Edition Devices
Qt uses the QPainter class to perform low-level painting on widgets and
other paint devices. QPainter provides functions to draw complex shapes,
aligned text and pixmaps. It can also do vector path clipping, coordinate
transformations and Porter-Duff composition. If the underlying graphics
architecture does not support all of these operations then Qt uses the
raster graphics system for rendering.
In Symbian Anna (and Symbian^3) Qt uses hardware accelerated graphics as explained above.
This is enabled by \l
{http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.html}
{ScreenPlay Graphics Architecture} in these devices.
Most of the Symbian S60 3rd and 5th Edition devices have a
graphics architecture that does not have native support for all functions
provided by QPainter. In these \l
{http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.html}
{non-ScreenPlay} devices Qt uses the raster
graphics system by default that has a performance penalty compared
to native Symbian rendering.
In order to be able to perform all functions provided by QPainter, the
raster graphics system needs to have pixel level framebuffer access. To
make this possible in non-ScreenPlay devices Qt has to create an
additional offscreen buffer that is the target for all Qt rendering
operations. Qt renders the widget tree to the offscreen buffer and the
offscreen buffer is blitted to the framebuffer via Symbian Window Server.
The following table shows the rendering stacks of native Symbian and Qt in
\l {http://library.developer.nokia.com/index.jsp?topic=/GUID-E35887BB-7E58-438C-AA27-97B2CDE7E069/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.html}
{non-ScreenPlay devices}.
\table
\header \o Symbian
\o Qt
\row \o \image symbian-rendering-stack-non-screenplay.png
\o \image symbian-qt-rendering-stack-non-screenplay.png
\endtable
The following diagrams show a simplified sequence of drawing a pixmap in
a non-ScreenPlay device.
\table
\header \o Symbian
\row \o \image symbian-draw-pixmap-sequence.png
\endtable
\table
\header \o Qt
\row \o \image symbian-qt-draw-pixmap-sequence.png
\endtable
When compared to a native Symbian application, Qt does an additional blit
to the offscreen buffer before drawing to the framebuffer. That is the
performance penalty which needs to be paid to get all functionality
provided by QPainter in non-ScreenPlay architecture.
*/
/*!
\page platform-notes-embedded-linux.html
\title Platform and Compiler Notes - Embedded Linux
\contentspage Platform and Compiler Notes
This page contains information about the Embedded Linux platforms Qt is
currently known to run on, with links to platform-specific notes. More
information about the combinations of platforms and compilers supported
by Qt can be found on the \l{Supported Platforms} page.
*/
|