Migrating to the gcc 4.6 compiler

Accessing the compiler

gcc4.6 is not installed by default in either slc5 or slc6. To use it for regular Gaudi/LHCb builds it is enough to set the environment variable CMTCONFIG accordingly (e.g. x86_64-slc5-gcc46-opt).

To be able to use it on the command line outside the Gaudi/LHCb builds, you can do the following (bash):

# export CMTCONFIG=x86_64-slc5-gcc46-opt
# SetupProject LCGCMT gcc
(use setenv on tcsh)

Accessing gcc46 builds

At the time of writing the gcc46 builds are available only in the nightlies (lhcb-lcg-head slot). For example you can do:
# export CMTCONFIG=x86_64-slc5-gcc46-dbg
# SetupProject --build-env --nightly lhcb-lcg-head LHCb HEAD

Common compilation errors

The most common problems are described on the gcc 4.6 migration guide (it may be useful to have a look to the gcc 4.4 one too).

Below are hints on solving other common errors or warnings.

Errors

Warnings

warning: operation on ... may be undefined [-Wsequence-point]

Comes from code like:
a = b = a = 1;

The problem is that the assignment to a appears twice and the standard does not define what the behavior should be. The code should be modified to remove the duplicated assignement:

a = b = 1;

-- MarcoClemencic - 23-Nov-2011

Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r2 - 2011-11-23 - MarcoClemencic
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LHCb All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback