summaryrefslogtreecommitdiffstats
path: root/doc/src/platforms/compiler-notes.qdoc
blob: c6ecd68897803d4d0a604affd987c9a8454d1823 (plain)
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
/****************************************************************************
**
** Copyright (C) 2010 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$
** Commercial Usage
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in a
** written agreement between you and Nokia.
**
** 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.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page compiler-notes.html
    \ingroup platform-specific
    \title Compiler Notes
    \brief Information about the C++ compilers and tools used to build Qt.

    This page contains information about the C++ compilers and tools used
    to build Qt on various platforms.

    \tableofcontents

    Please refer to the \l{Platform Notes} for information on the platforms
    Qt is currently known to run on, and see the \l{Supported Platforms}
    page for information about the status of each platform.

    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}.

    \section1 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
    \row    \o SunCC 5.5        \o            \o             \o          \o \bold{X} \o \bold{X}
    \row
    \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
    \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.

    \target GCC
    \section1 GCC

    \section2 GCC on Windows (MinGW)

    We have tested Qt with this compiler on Windows XP.
    The minimal version of MinGW supported is:

    \list
    \o GCC 3.4.2
    \o MinGW runtime 3.7
    \o win32api 3.2
    \o binutils 2.15.91
    \o mingw32-make 3.80.0-3
    \endlist

    \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 pacakge, not to run the pre-compiled binaries that are in
    the package.

    \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 HP-UX

    The hpux-g++ platform is tested with GCC 3.4.4.

    \section2 Solaris

    Please use GCC 3.4.2 or later.

    \section2 Mac OS X

    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 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 -O2 option.
    \o Add -fno-gcse to the QMAKE_CXXFLAGS_RELEASE.
    \endlist

    \section1 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.

    \section1 Intel C++ Compiler

    Qt supports the Intel C++ compiler on both Windows and Linux.
    However, there are a few issues on Linux (see the following
    section).

    \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

    \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.

    \section1 MIPSpro (IRIX)

    \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.}

    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.

    \target Sun Studio
    \section1 Forte Developer / Sun Studio (Solaris)

    \section2 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.

    \section1 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 crashes for the release builds and it is not supported
    in that configuration. See task http://bugreports.qt.nokia.com/browse/QTBUG-11445.

    \section1 IBM xlC (AIX)

    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.

    \section2 GCCE (Symbian)

    GCCE cannot be used to compile Qt libaries for the Symbian platform, but GCCE is supported
    when compiling Qt applications for Symbian platform.
*/