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:
LbLogin -c 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

gcc46 builds are part of the official LHCb software distribution for all projects released since January 2012

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 assignment:

a = b = 1;
or, better
a = 1;
b = 1;

Differences in application output between gcc43 and gcc46

The most common cause of differences when comparing the output of an application build with gcc46 with the gcc43 equivalent are due to differences in sorting. In most cases, the differences have been fixed by replacing occurrences of std::sort with std::stable_sort

-- MarcoClemencic - 23-Nov-2011

Edit | Attach | Watch | Print version | History: r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r3 - 2012-03-08 - MarcoCattaneo
 
    • 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-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback