Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
25 Views

ABI compatibility between updates of the Intel C++ compiler

On linux, the intel C++ compiler libraries (eg. libimf.so) 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 libimf.so from icc 14.0.2? (I presume yes) If I build a shared library with icc13 will it work with the libimf.so 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?

Thanks!

0 Kudos
2 Replies
Highlighted
Black Belt
25 Views

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.
 

0 Kudos
Highlighted
Beginner
25 Views

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 : 

https://software.intel.com/sites/products/documentation/doclib/iss/2013/compiler/cpp-lin/GUID-D61B9F...
 

The Intel C++ Compiler does not support more than one run-time library in one application.

CAUTION

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.

0 Kudos