With gcc 3.x, C++ linkage was changed from 2.x to comply with the standard C++ name mangling. The benefit is that GCC-compiled object code can interoperate with object code from other vendors. The drawback is that binary compatibility was broken and required all C++ shared libraries to be updated. This is not a problem with Linux, this is a problem with the GNU toolchain which also affects *BSD, etc. But everyone got on the bandwagon and called it a Linux problem for some reason, propagating an incorrect assertion.