as I did not get any further information or advice for my last comment in my Intel Premier support issue, I am going to repeat here again that I would please like to have file-by-file information for each of the below files what they are intended for and when each of them should be used...
/opt/intel/compilers_and_libraries_2019.3.199/linux/compiler/lib/intel64_lin $ ll libifc* -rwxr-xr-x 1 root root 2158296 Feb 6 2019 libifcore.a -rwxr-xr-x 1 root root 2195406 Feb 6 2019 libifcoremt.a -rwxr-xr-x 1 root root 1873526 Feb 6 2019 libifcoremt_pic.a -rwxr-xr-x 1 root root 26 Feb 6 2019 libifcoremt.so -rwxr-xr-x 1 root root 1404746 Feb 6 2019 libifcoremt.so.5 -rwxr-xr-x 1 root root 1846160 Feb 6 2019 libifcore_pic.a -rwxr-xr-x 1 root root 24 Feb 6 2019 libifcore.so -rwxr-xr-x 1 root root 1387459 Feb 6 2019 libifcore.so.5
These are the files present in our system installation of the Intel compiler and we need to know the exact intended usage of each of them to be able to decide which to use.
Or be directed to a page (please give exact URL) where we can find that exact information.
Thank you in advance and best regards,
It is not hard to guess, although you should usually leave it to the discretion of the ifort compiler driver to select the appropriate library based on the options that you give it, rather than to explicitly use one of the library names on the command line.
The two files that are less than 30 bytes long, the ones that end with .so, are probably symbolic links to the two that end with .so.5 . These latter ones are the actual shared libraries. Even the most stable genius could not pack a full Fortran runtime into 26 bytes.
The three libraries with the .a ending are static libraries.
The libraries with pic in their names are to be used when a user is generating shared libraries from Fortran (and other) code, rather than generating an a.out executable. Similarly, mt stands for multi-threaded.
This question should have been posted in the Fortran on Linux/Macintosh forum.
Thanks a lot for the info. - Feel free to move this topic to the correct forum (sorry for that).
I also assumed so, but itis just a bit "confusing" that on Linux one should use the "MT" ones for shared libraries while on Windows one should use the "MD" ones if building a DLL and the "MT" one is the statis multithreaded one. - That led to the assumption that the "MT" one on Linux might also be the static one... (together with the fact that there is no "MD" on linux...) - So it just seems that the naming is not consistent / a bit confusing / misleading.
The Linux linker ld can link user object modules directly with shared libraries (*.so). The Microsoft linker, on the other hand, cannot -- it requires that an import library be provided. On Windows, static and import libraries have .LIB as extension, and are not executable. On Linux, however, shared libraries are executable and are also scanned by the linker. Therefore, full consistency has to remain elusive.