GCC* Compatibility and Interoperability
This topic applies to Linux*
The Intel® C++ Compiler is compatible with most versions of the GNU Compiler Collection (GCC*). The release notes contains a list of compatible versions.
C language object files created with the Intel® C++ Compiler are binary compatible with GCC* and C/C++ language library. You can use the Intel® C++ Compiler or the GCC compiler to pass object files to the linker.
To pass IPO mock object files or libraries of IPO mock object files produced by the Intel® C++ Compiler to the linker, use the linking tools provided with the Intel® C++ Compiler. Specifically:
When using an Intel software development product that includes an Intel® C++ Compiler with a Clang front-end, you can also use
Link-time optimization using the
-ffat-lto-objectscompiler option is provided for GCC* compatibility. This implies that
arcan be used to link and archive object files, but by doing so you will lose cross-file optimizations. You can use the
-fno-fat-lto-objectscompiler option when linking using IPO mock object files, provided that you link the IPO mock object files with
xildand archive them with
The Intel® C++ Compiler supports many of the language extensions provided by the GNU compilers. See http://www.gnu.org for more information.
Statement expressions are supported, except that the following are prohibited inside them:
- dynamically-initialized local static variables
- local non-POD class definitions
- variable length arrays
The Intel® C++ Compiler supports GCC-style inline ASM if the assembler code uses AT&T* System V/386 syntax.
C++ compilers are interoperable if they can link object files and libraries generated by one compiler with object files and libraries generated by the second compiler, and the resulting executable runs successfully. The Intel® C++ Compiler is highly compatible with the GNU compilers.
The Intel® C++ Compiler and GNU GCC* compiler support the following predefined macros: