Intel® C++ Compiler
Support and discussions for creating C++ code that runs on platforms based on Intel® processors.
7730 Discussions

ABI compatibility between updates of the Intel C++ compiler


On linux, the intel C++ compiler libraries (eg. don't use soname versioning to indicate ABI compatibility. When intel issues a major upgrade or patch upgrade, are these libraries ABI compatible? eg. if I built a shared library with icc14.0.0, will it still work if I link to the from icc 14.0.2? (I presume yes) If I build a shared library with icc13 will it work with the from icc14? (I presume no)

Also, if I build a shared library with a new icc (eg. 14.0.2), will it run with a binary which was built & uses an old major version icc (eg. 13.1.1)? (I presume no)

Would you consider adding soname versions to the intel libraries to make this clear?


0 Kudos
2 Replies
Black Belt

In the past, it was stated that testing is performed to assure that .o files will continue to work through the next major version.  Presumably this applies also to a .so which is built entirely from .o files made by icc.  So, what is built by 13.x would continue to work through the end of 14.0 series, possibly longer.  .o files (and .so) made by a newer major version will not necessarily work with an older version, primarily (I believe) due to possible changes in run-time libraries, but also, e.g. in C++, due to possible use of new language features.

There could be a limitation also to g++ installations which support the header files used at build time.


Thanks Tim, that's good to know. 

I also found this on the intel site, it implies mixing libstdc++ versions (ie. g++ installations) is a bad idea :

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.