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?
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.