doc/src/platforms/compiler-notes.qdoc
branchRCL_3
changeset 8 3f74d0d4af4c
equal deleted inserted replaced
6:dee5afe5301f 8:3f74d0d4af4c
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the documentation of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 /*!
       
    43     \page compiler-notes.html
       
    44     \ingroup platform-specific
       
    45     \title Compiler Notes
       
    46     \brief Information about the C++ compilers and tools used to build Qt.
       
    47 
       
    48     This page contains information about the C++ compilers and tools used
       
    49     to build Qt on various platforms.
       
    50 
       
    51     \tableofcontents
       
    52 
       
    53     Please refer to the \l{Platform Notes} for information on the platforms
       
    54     Qt is currently known to run on, and see the \l{Supported Platforms}
       
    55     page for information about the status of each platform.
       
    56 
       
    57     If you have anything to add to this list or any of the platform or
       
    58     compiler-specific pages, please submit it via the \l{Bug Report Form}
       
    59     or through the \l{Public Qt Repository}.
       
    60 
       
    61     \section1 Supported Features
       
    62 
       
    63     Not all compilers used to build Qt are able to compile all modules. The following table
       
    64     shows the compiler support for five modules that are not uniformly available for all
       
    65     platforms and compilers.
       
    66 
       
    67     \table
       
    68     \header \o Compiler \o{5,1} Features
       
    69     \header \o                  \o Concurrent \o XmlPatterns \o WebKit   \o CLucene  \o Phonon
       
    70     \row    \o g++ 3.3          \o            \o \bold{X}    \o          \o \bold{X} \o \bold{X}
       
    71     \row    \o g++ 3.4 and up   \o \bold{X}   \o \bold{X}    \o \bold{X} \o \bold{X} \o \bold{X}
       
    72     \row
       
    73     \row    \o SunCC 5.5        \o            \o             \o          \o \bold{X} \o \bold{X}
       
    74     \row
       
    75     \row    \o aCC series 3     \o            \o             \o          \o \bold{X} \o \bold{X}
       
    76     \row    \o aCC series 6     \o \bold{X}   \o \bold{X}    \o \bold{X} \o \bold{X} \o \bold{X}
       
    77     \row    \o xlC 6            \o            \o             \o          \o \bold{X} \o \bold{X}
       
    78     \row    \o Intel CC 10      \o \bold{X}   \o \bold{X}    \o \bold{X} \o \bold{X} \o \bold{X}
       
    79     \row
       
    80     \row    \o MSVC 2003        \o \bold{X}   \o \bold{X}    \o          \o \bold{X} \o \bold{X}
       
    81     \row    \o MSVC 2005 and up \o \bold{X}   \o \bold{X}    \o \bold{X} \o \bold{X} \o \bold{X}
       
    82     \endtable
       
    83 
       
    84     \target GCC
       
    85     \section1 GCC
       
    86 
       
    87     \section2 GCC on Windows (MinGW)
       
    88 
       
    89     We have tested Qt with this compiler on Windows XP.
       
    90     The minimal version of MinGW supported is:
       
    91 
       
    92     \list
       
    93     \o GCC 3.4.2
       
    94     \o MinGW runtime 3.7
       
    95     \o win32api 3.2
       
    96     \o binutils 2.15.91
       
    97     \o mingw32-make 3.80.0-3
       
    98     \endlist
       
    99 
       
   100     \note For users of the MinGW binary package: This package is now
       
   101     based on MinGW 4.4. The installer no longer offers to download
       
   102     MinGW for you, but rather offers to use a version of MinGW that
       
   103     you already have installed on your machine. You just tell the
       
   104     installer which directory MinGW is installed in. If you don't
       
   105     already have MinGW 4.4 installed, you can download a .zip archive
       
   106     from our \l{ftp://ftp.trolltech.com/misc/MinGW-gcc440_1.zip} {ftp
       
   107     site}. This archive provides fixes to MinGW and support for
       
   108     missing API, See the _patches directory in the archive for
       
   109     details.
       
   110 
       
   111     \note A MinGW installation is only needed to build against the
       
   112     binary pacakge, not to run the pre-compiled binaries that are in
       
   113     the package.
       
   114 
       
   115     \section2 GCC 4.0.0
       
   116 
       
   117     The released package of the compiler has some bugs that lead to
       
   118     miscompilations.  We recommend using GCC 4.0.1 or later, or to use
       
   119     a recent CVS snapshot of the GCC 4.0 branch. The version of GCC
       
   120     4.0.0 that is shipped with Mac OS X 10.4 "Tiger" is known to work
       
   121     with Qt for Mac OS X.
       
   122 
       
   123     \section2 HP-UX
       
   124 
       
   125     The hpux-g++ platform is tested with GCC 3.4.4.
       
   126 
       
   127     \section2 Solaris
       
   128 
       
   129     Please use GCC 3.4.2 or later.
       
   130 
       
   131     \section2 Mac OS X
       
   132 
       
   133     Please use the latest GCC 3.3 from Apple or a later version of GCC 3.
       
   134     The gcc 3.3 that is provided with Xcode 1.5 is known to generate bad code.
       
   135     Use the November 2004 GCC 3.3 updater \l{http://connect.apple.com}{available from Apple}.
       
   136 
       
   137     \section2 GCC 3.4.6 (Debian 3.4.6-5) on AMD64 (x86_64)
       
   138 
       
   139     This compiler is known to miscompile some parts of Qt when doing a
       
   140     release build. There are several workarounds:
       
   141 
       
   142     \list 1
       
   143     \o Use a debug build instead.
       
   144     \o For each miscompilation encountered, recompile the file, removing the -O2 option.
       
   145     \o Add -fno-gcse to the QMAKE_CXXFLAGS_RELEASE.
       
   146     \endlist
       
   147 
       
   148     \section1 HP ANSI C++ (aCC)
       
   149 
       
   150     The hpux-acc-32 and hpux-acc-64 platforms are tested with aCC A.03.57. The
       
   151     hpuxi-acc-32 and hpuxi-acc-64 platforms are tested with aCC A.06.10.
       
   152 
       
   153     \section1 Intel C++ Compiler
       
   154 
       
   155     Qt supports the Intel C++ compiler on both Windows and Linux.
       
   156     However, there are a few issues on Linux (see the following
       
   157     section).
       
   158 
       
   159     \section2 Intel C++ Compiler for Linux
       
   160 
       
   161     Nokia currently tests the following compilers:
       
   162 
       
   163     \list
       
   164 
       
   165     \o Intel(R) C++ Compiler for applications running on IA-32,
       
   166     Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
       
   167 
       
   168     \o Intel(R) C++ Compiler for applications running on Intel(R) 64,
       
   169     Version 10.1 Build 20080602 Package ID: l_cc_p_10.1.017
       
   170 
       
   171     \endlist
       
   172 
       
   173     We do not currently test the IA-64 (Itanium) compiler.
       
   174 
       
   175     \section2 Known Issues with Intel C++ Compiler for Linux
       
   176 
       
   177     \list
       
   178 
       
   179     \o Precompiled header support does not work in version 10.0.025
       
   180        and older. For these compilers, you should configure Qt with
       
   181        -no-pch. Precompiled header support works properly in version
       
   182        10.0.026 and later.
       
   183     \o Version 10.0.026 for Intel 64 is known to miscompile qmake when
       
   184        building in release mode. For now, configure Qt with
       
   185        -debug. Version 10.1.008 and later can compile qmake in release
       
   186        mode.
       
   187     \o Versions 10.1.008 to 10.1.015 for both IA-32 and Intel 64 are
       
   188        known crash with "(0): internal error: 0_47021" when compiling
       
   189        QtXmlPatterns, QtWebKit, and Designer in release mode. Version
       
   190        10.1.017 compiles these modules correctly in release mode.
       
   191     \endlist
       
   192 
       
   193     \section2 Intel C++ Compiler (Windows, Altix)
       
   194 
       
   195     Qt 4 has been tested successfully with:
       
   196 
       
   197     \list
       
   198     \o Windows - Intel(R) C++ Compiler for 32-bit applications,
       
   199        Version 9.1.040.
       
   200     \o Altix - Intel(R) C++ Itanium(R) Compiler for Itanium(R)-based
       
   201        applications Version 8.1 Build 20050406 Package ID: l_cc_pc_8.1.030
       
   202     \endlist
       
   203 
       
   204     We currently only test the Intel compiler on 32-bit Windows versions.
       
   205 
       
   206     \section1 MIPSpro (IRIX)
       
   207 
       
   208     \bold{IRIX is an unsupported platform. See the \l{Supported Platforms} page
       
   209     and Qt's Software's online \l{Platform Support Policy} page for details.}
       
   210 
       
   211     Qt 4.4.x requires MIPSpro version 7.4.2m.
       
   212 
       
   213     Note that MIPSpro version 7.4.4m is currently not supported, since it has
       
   214     introduced a number of problems that have not yet been resolved.
       
   215     We recommend using 7.4.2m for Qt development. However, please note the
       
   216     unsupported status of this platform.
       
   217 
       
   218     \target Sun Studio
       
   219     \section1 Forte Developer / Sun Studio (Solaris)
       
   220 
       
   221     \section2 Sun Studio
       
   222 
       
   223     Qt is tested using Sun Studio 12 (Sun CC 5.9). Go to
       
   224     \l{Sun Studio Patches} page on Sun's Web site to download
       
   225     the latest patches for your Sun compiler.
       
   226 
       
   227     Please note that Qt 4.6 is stricter in its STL requirements and
       
   228     that the default STL implementation used by Sun CC does not pass
       
   229     those requirements. This does not affect binary compatibility and
       
   230     you can continue to use STL in your own code, but Qt's
       
   231     STL-compatibility functions will be disabled.
       
   232 
       
   233     Sun CC ships with a secondary STL implementation (called stlport4)
       
   234     which is standards-compliant and can be used by Qt. You can enable
       
   235     it by passing the -library=stlport4 option to the compiler. Note
       
   236     that this does not affect Qt's binary compatibility, but it may
       
   237     affect that of other libraries and programs that use STL.
       
   238 
       
   239     \section2 Sun WorkShop 5.0
       
   240 
       
   241     Sun WorkShop 5.0 is not supported with Qt 4.
       
   242 
       
   243     \section1 Visual Studio (Windows)
       
   244 
       
   245     We do most of our Windows development on Windows XP, using Microsoft
       
   246     Visual Studio .NET 2005 and Visual Studio 2008 (both the 32- and 64-bit
       
   247     versions).
       
   248 
       
   249     Qt works with the Standard Edition, the Professional Edition and Team
       
   250     System Edition of Visual Studio 2005.
       
   251 
       
   252     We also test Qt 4 on Windows XP with Visual Studio .NET and Visual Studio 2003.
       
   253 
       
   254     In order to use Qt with the Visual Studio 2005/2008 Express Edition you need
       
   255     to download and install the platform SDK. Due to limitations in the
       
   256     Express Edition it is not possible for us to install the Qt Visual
       
   257     Studio Integration. You will need to use our command line tools to
       
   258     build Qt applications with this edition.
       
   259 
       
   260     The Visual C++ Linker doesn't understand filenames with spaces (as in
       
   261     \c{C:\Program files\Qt\}) so you will have to move it to another place,
       
   262     or explicitly set the path yourself; for example:
       
   263 
       
   264     \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 0
       
   265 
       
   266     If you are experiencing strange problems with using special flags that
       
   267     modify the alignment of structure and union members (such as \c{/Zp2})
       
   268     then you will need to recompile Qt with the flags set for the
       
   269     application as well.
       
   270 
       
   271     If you're using Visual Studio .NET (2002) Standard Edition, you should be
       
   272     using the Qt binary package provided, and not the source package.
       
   273     As the Standard Edition does not optimize compiled code, your compiled
       
   274     version of Qt would perform suboptimally with respect to speed.
       
   275 
       
   276     With Visual Studio 2005 Service Pack 1 a bug was introduced which
       
   277     causes Qt not to compile, this has been fixed with a hotfix available
       
   278     from Microsoft. See this
       
   279     \l{http://qt.nokia.com/developer/faqs/faq.2006-12-18.3281869860}{Knowledge Base entry}
       
   280     for more information.
       
   281 
       
   282     \section1 IBM xlC (AIX)
       
   283 
       
   284     The makeC++SharedLib utility must be in your PATH and be up to date to
       
   285     build shared libraries. From IBM's
       
   286     \l{http://www.redbooks.ibm.com/abstracts/sg245674.html}{C and C++ Application Development on AIX}
       
   287     Redbook:
       
   288 
       
   289     \list
       
   290     \o "The second step is to use the makeC++SharedLib command to create the
       
   291        shared object. The command has many optional arguments, but in its
       
   292        simplest form, can be used as follows:"
       
   293        \snippet doc/src/snippets/code/doc_src_compiler-notes.qdoc 1
       
   294     \o "The full path name to the command is not required; however, to avoid
       
   295        this, you will have to add the directory in which it is located to
       
   296        your PATH environment variable. The command is located in the
       
   297        /usr/vacpp/bin directory with the VisualAge C++ Professional for AIX,
       
   298        Version 5 compiler."
       
   299     \endlist
       
   300 
       
   301     \section2 VisualAge C++ for AIX, Version 6.0
       
   302 
       
   303     Make sure you have the
       
   304     \l{http://www-1.ibm.com/support/search.wss?rs=32&tc=SSEP5D&dc=D400}{latest upgrades}
       
   305     installed.
       
   306 
       
   307     \section2 GCCE (Symbian)
       
   308 
       
   309     GCCE cannot be used to compile Qt libaries for the Symbian platform, but GCCE is supported
       
   310     when compiling Qt applications for Symbian platform.
       
   311 */