Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Compatibility with GCC 5.1.0

Ryan_M_1
Beginner
822 Views

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
Honored Contributor III
822 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.

0 Kudos
Ryan_M_1
Beginner
822 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.

0 Kudos
Ryan_M_1
Beginner
822 Views

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

 

0 Kudos
francois_j_
Beginner
822 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.

 

0 Kudos
TimP
Honored Contributor III
822 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.

0 Kudos
TimP
Honored Contributor III
822 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.
0 Kudos
Reply