Mixing Tool Chains

Mixing object files compiled with different vendor's compilers is not generally advisable. Clang, GNU, Intel, and Sun compilers, for example, use slightly different formats for object files they output. Different major versions of the same compiler may also be incompatible. The one exception is that clang/llvm and gcc are designed to be compatible with each other. Some problems may occur, but they are generally resolvable.

Users are therefore advised to build all program modules with the same version of the same compiler. If pre-compiled libraries are being used (e.g. MPI, lapack, etc.) be sure to use the same compiler that the libraries were built with. A slightly newer compiler is usually OK as well, but even that introduces some doubt about the stability of the executable.