The Intel® C++ Compiler options that affect gcc* interoperability include:
The -gcc-name=dir option, used with -cxxlib, lets you specify the full-path location of gcc if the compiler cannot locate the gcc C++ libraries. Use this option when referencing a non-standard gcc installation.
The -gcc-version=nnn option provides compatible behavior with gcc, where nnn indicates the gcc version. The -gcc-version option is ON by default, and the value of nnn depends on the version of gcc installed on your system. This option selects the version of gcc with which you achieve ABI interoperability.
The -gxx-name=dir option specifies that the g++ compiler should be used to set up the environment for C++ compilations.
The -cxxlib[=dir] option (ON by default) builds your applications using the C++ libraries and header files included with the gcc compiler. They include:
Use the optional argument, =dir, to specify the top-level location for the gcc binaries and libraries.
The Intel C++ Compiler is compatible with gcc 3.2, 3.3, 3.4, 4.0, 4.1 and 4.2.
When you compile and link your application, the resulting C++ object files and libraries can interoperate with C++ object files and libraries generated by gcc 3.2 or higher. This means that third-party C++ libraries built with gcc 3.2 will work with C++ code generated by the Intel Compiler.
gcc 3.2, 3.3, and 3.4 are not interoperable. gcc 4.0, 4.1, and 4.2 are interoperable. By default, the Intel compiler will generate code that is interoperable with the version of gcc it finds on your system.
By default, the Intel C++ Compiler uses headers and libraries included with the product, when the system includes a version of gcc less than 3.2.
If you build one shared library against the Intel C++ libraries, build a second shared library against the gnu C++ libraries, and use both libraries in a single application, you will have two C++ run-time libraries in use. Since the application might use symbols from both libraries, the following problems may occur:
partially initialized libraries
lost I/O operations from data put in unaccessed buffers
other unpredictable results, such as jumbled output
The Intel C++ Compiler does not support more than one run-time library in one application.
If you successfully compile your application using more than one run-time library, the resulting program will likely be very unstable, especially when new code is linked against the shared libraries.
For more information on ABI conformance, see http://www.codesourcery.com/