Is there a systematic way to determine which libraries to include in an application's distribution package?
Up to now, I have been proceeding by trial and error, adding the libs when a user complains that they are missing on his system. For instance for win64, the end result is a package which includes
The app itself uses such functions as LAPACKE_dgetrs, _sgetrs, _dgetrf, _sgetrf, _dgesv, _dgels etc.
Sometimes a library seems to be missing for one user but not for another. This happens for instance on macOS.
Couldn't find relevant documentation about this, so any help will be greatly appreciated.
By the design, the recommended way to have all mkl's dll installed on your system. That will allow users to have the optimizations for all supported hardware. In the case of static linking, you need to copy threading libraries ( libiomp and/or tbb).
Where it is possible to find information from Intel about the functions provided by the listed mkl dll;
i.e libiomp5md.dll, mkl_avx2.dll, mkl_core.dll, mkl_def.dll, mkl_intel_thread.dll, mkl_mc3.dll, mkl_sequential.dll.
I believe if you're trying to save some space and sure about the set of the functions being used in an application, this topic will be useful -- Building Custom Dynamic-link Libraries.
Other then that (customDLL builder) it is not recommended to alter the installation and there is no common rule for doing so.