Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Ryan_M_1
Beginner
205 Views

Compatibility with GCC 5.1.0

When I attempt to compile any source file with icpc that includes the complex header (#include <complex>) using GCC 5.1.0 (-gxx-name=/opt/gcc/5.1.0/bin/g++) with -std=c++11 I get several compilation errors indicating a collision between the Intel and GCC complex header files, e.g.

In file included from /opt/gcc/5.1.0/include/c++5.1.0/sstream(813), from /opt/gcc/5.1.0/include/c++5.1.0/complex(45), from /opt/intel/2015/compiler/include/complex(30),from test.cpp(2): /opt/gcc/5.1.0/include/c++/5.1.0/bits/stl_iterator_base_types.h(154): error: class "std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>" has no member "iterator_category"

I am able to compile the source files without issue using g++ 5.1.0

Is this a configuration issue with this particular build of GCC 5.1.0 or a compatibility problem?

0 Kudos
6 Replies
TimP
Black Belt
205 Views

icc tends not to pick up such changes in major gcc releases which don't appear in the default gcc of a linux release available at the time of development of the icc major version.  It's helpful to keep a new gcc in a separate install path so that icpc can pick up a supported g++.

You didn't say which icc version you meant.  Perhaps if you would try the 16.0 beta and file problem reports, you could establish customer interest in getting compatibility, particularly since gcc 5.1 advertises support for the future KNL version of Intel(r) Xeon Phi(tm). Current MIC MPSS release still includes gcc 4.7.

Ryan_M_1
Beginner
205 Views

I saw this issue with 15.0.2 but I am pulling down the 16.0 beta now to test out the behavior - thanks for the suggestion.

Ryan_M_1
Beginner
205 Views

As a follow up, this issue is resolved in icpc (ICC) 16.0.0 20150326

 

francois_j_
Beginner
205 Views

I get a similar trouble with a conflict between icc-12.1.6 (20120928) and gcc-4.9.2 :

/export/opt/GCC/4.9.2/include/c++/4.9.2/ext/atomicity.h(49): error: identifier "__ATOMIC_ACQ_REL" is undefined
    { return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); }

Is there a way to overcome this trouble in changing the PATH  ? Here is my current PATH :

dev005{tonino} 62 : echo $PATH
.:/export/opt/INTEL/2011.13.367/composer_xe_2011_sp1.13.367/bin/intel64:/export/opt/INTEL/2011.13.367/composer_xe_2011_sp1.13.367/bin/intel64:/export/opt/GCC/4.9.2/bin:/opt/sge/bin:/opt/sge/bin/lx-amd64:/bin:/usr/bin:/export/opt/INTEL/2011.13.367/composer_xe_2011_sp1.13.367/mpirt/bin/intel64:/export/opt/INTEL/2011.13.367/composer_xe_2011_sp1.13.367/mpirt/bin/intel64:/home/semar/coul/bin:/home/semar/coul/download/WordNet-2.0/bin/linux_64

dev005{tonino} 61 : icc --version
icc (ICC) 12.1.6 20120928
Copyright (C) 1985-2012 Intel Corporation.  All rights reserved.

dev005{tonino} 64 : gcc --version
gcc (GCC) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

TimP
Black Belt
205 Views

I think you have a similar issue to the one on which the thread was started; you can't expect an old version of icc (icpc?) to work with a newer gcc (g++?) which wasn't even under development at the same time as the icc.

TimP
Black Belt
205 Views

Icc is designed to rely on g++ for compatibility and doesn't supply many of its own headers or libraries. At one time, dinkumware was supplied.
Reply