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

What redistributables are now required to run a compiled app on Windows?

David_Kinniburgh
Beginner
799 Views

I use VS2019 to make an app compiled with ifort/ifx using static libraries (/static) and also linked to a static library written in C++. This has worked well for ages but I received a comment from a user recently that they had got the message:

"The code execution cannot proceed because libiompstubs5md.dll was not found. Reinstalling the program may fix the issue."

 

I have always added libiomp5md.dll to the same directory as my executable  and when that was renamed to the stub version, the user reported that it then worked ok.

 

I checked your latest FAQ's on this and was pointed to 

https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#inpage-nav-3

 and so I downloaded and ran the 2024.2.1 (30 MB Aug. 5, 2024) runtime installer. This said:

 

" Intel Fortran Compiler runtime has no independently selectable features."

 

which I interpret as saying that no redistributable libraries are now required. So any ideas about what went wrong to give the stub message and do I still need to include  libiomp5md.dll when distributing - I could not find any mention that this is still needed? Are there any differences between executables prepared with ifort and ifx in this regard?

 

Thanks

0 Kudos
3 Replies
andrew_4619
Honored Contributor III
782 Views

" Intel Fortran Compiler runtime has no independently selectable features." I think you will find that means ALL or NOTHING, you cannot cherry pick a sub-set.   If you have any OpenMP or any parallel features then you need the redistributable package. If you don't you can make a static build that does not need the redistributable package.  That is my understanding.

0 Kudos
David_Kinniburgh
Beginner
716 Views

Thanks.  I think the stub version comes from the 'Language|Process OpenMP directives' setting if it is set to 'Generate Sequential Code'.  I must have accidentally set this (i.e. /Qopenmp-stubs) rather than to 'Disable'.  The other setting that is involved is Optimization|Parallelization which presumably controls the compilers own attempts to parallelize. If I have this set to 'No' and Process  OpenMP  to 'Disable', is the libiomp5md.dll library still required? Using the 'Dependencies' program (https://github.com/lucasg/Dependencies) suggests 'No'  but if Parallelization is set to 'Yes' /Qparallel, then the answer is 'yes'.

 

0 Kudos
Ron_Green
Moderator
600 Views

/Qparallel will look at DO loops and try to convert them to OpenMP loops and will link in the OpenMP runtime library: the OpenMPI library libiomp5.  Even stubs requires libiomp5 as it calls do-nothing functions in that library. 

 

Many developers will simply copy any needed DLLs from the runtime along with their exe.  this way you don't have to get your end customers to install the Intel Fortran Redistributable (Runtime) library package.   Dependencies is essential for this.

Ah, and yes, this is perfectly legal to distribute any of our libraries with your executable, you don't have to install the whole set, just those you need.  

 

 

0 Kudos
Reply