Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Linking with Intel Fortran Compiler - Question about library "libifcore" - Which to use? Naming mismatch

Frank_Illenseer
Beginner
1,754 Views

Hi All,

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,
Frank

0 Kudos
5 Replies
mecej4
Honored Contributor III
1,754 Views

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.

0 Kudos
Frank_Illenseer
Beginner
1,754 Views

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.

 

0 Kudos
mecej4
Honored Contributor III
1,754 Views

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.

0 Kudos
abdulkadir_n_
Beginner
1,754 Views
Hi, all I have a problem trying to compile a fortran.90 source file which contain an include fftw3.fo3 command, it is always telling me '' error 5102 can not open an include file fftw3.f03
0 Kudos
Frank_Illenseer
Beginner
1,754 Views

@abdulkadir n: Please post your question into a separate issue and do not "clutter" this one as it is not related as far as I can see. - Thanks.

0 Kudos
Reply