For BLAS/LAPACK/PARDISO,ingeneral, libmkl_intel_lp64, libmkl_intel_thread, libmkl_corelibiomp5 are needed.
libmkl_blacs_intelmpi_lp64.a libmkl_gf_lp64.a andlibmkl_scalapack_lp64.a may not needed if you are not using blacs or scalapack andGnu fotran compiler.
But for exact libs, it may depend on your real application and how you link them into your application.
first, you maytry MKL link advisor http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/ to get what library you needto linked in your application.
second thing, MKL provide both static library and dynamic library. (almost same name, but static library end with *.a and dynamic library end with *.so).
So you may consider the link type.
if you link static mkl library, then no MKL library need to be redistribute.
if you link dynamic mkl library, you can use
to show which mkl library is linked in your program.
but in general, except theones show inldd result, you need to redistribute almost all of *.so under mkl linux 64 in computational layer if your applicationwill support all kinds of platform.
becauselibmkl_mc3.so, libmkl_mc.so, libmkl_p4n.so areneededat run time.
libmkl_mc3.so: Kernel for processors based on the Intel Core microarchitecture
Klibmkl_mc.so: ernel for the Intel Core i7 processors
libmkl_p4n.so: Kernel for the Intel Xeon processor using the Intel 64 architecture
All functionality of MKL libs are discribledin MKL Userguide. You may read more details about what functionality of each MKL libs in MKL User guide.
for example, i have one exe file, test show thatlibmkl_intel_lp64, lib mkl_intel_thread, libmkl_core and libiomp5 are needed. They are dynamic library.
[yhu5@kentsfield-01 MKL_issue]$ ldd tester_fix
libmkl_intel_lp64.so => not found
libmkl_intel_thread.so => not found
libmkl_core.so => not found
libiomp5.so => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000380de00000)
libm.so.6 => /lib64/libm.so.6 (0x000000380d600000)
libc.so.6 => /lib64/libc.so.6 (0x000000380d200000)
Run-time Libraries (RTL)
BLACS routines supporting Intel MPI and MPICH2
Catalog of Intel Math Kernel Library (Intel MKL) messages in English
Catalog of Intel MKL messages in Japanese. Available only if the Intel MKL package provides Japanese localization. Please see the Release Notes for this information
some symbols are cross-reference in the library in group.
Some explanation in MKL User guide:
In case of static linking, enclose the cluster components, interface, threading, and computational libraries in grouping symbols (for example, -Wl,--start-group $MKLPATH/libmkl_cdft_core.a $MKLPATH/libmkl_blacs_intelmpi_ilp64.a $MKLPATH/libmkl_intel_ilp64.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a -Wl,--end-group).
The order of listing libraries on the link line is essential, except for the libraries enclosed in the grouping symbols above.
If your compiler doesn't support the option-Wl,--start-group, you may need tosolve the symbols by link them several time. for example
4.2) Build& Distributing Your Custom Shared Object
I guess, it is not a problem for you to build a custom dll with the command
xeons03 335> make libintel64 export=my_func_list.txt MKLROOT=/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl
But regarding the error ida_superlu.c:21: undefined reference to `MKL_Set_Num_Threads', .....
I haven't see exact command about howyou usemkl_custom.so during build yourdll, may be libSundials.so, so I can't say more.
Butplease notice that the order of listing libraries on the link line is essential under linux.The mkl_custom.so is supposed at the end of your *.o or at least after libsuperlu.a.
Once you decide to use the mkl_custom.so, then just distribute mkl_custom.so and libiomp5.so, no other mkl library isrequired.
Hope it helps,