The following examples illustrate linking that uses Intel(R) compilers.
The examples use the .f Fortran source file. C/C++ users should instead specify a .cpp (C++) or .c (C) file and replace ifort with icc
If you successfully completed the Setting Environment Variables step of the Getting Started process, you can omit -I$MKLINCLUDE in all the examples and omit -L$MKLPATH in the examples for dynamic linking.
In these examples,
MKLPATH=$MKLROOT/lib/ia32,
MKLINCLUDE=$MKLROOT/include
:
Static linking of myprog.f and parallel Intel MKL:
ifort myprog.f
-L$MKLPATH -I$MKLINCLUDE
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a -Wl,--end-group -liomp5
-lpthread
Dynamic linking of myprog.f and parallel Intel MKL:
ifort myprog.f
-L$MKLPATH -I$MKLINCLUDE
-lmkl_intel -lmkl_intel_thread -lmkl_core -liomp5 -lpthread
Static linking of myprog.f and sequential version of Intel MKL:
ifort myprog.f
-L$MKLPATH -I$MKLINCLUDE
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_sequential.a $MKLPATH/libmkl_core.a
-Wl,--end-group
-lpthread
Dynamic linking of myprog.f and sequential version of Intel MKL:
ifort myprog.f
-L$MKLPATH -I$MKLINCLUDE
-lmkl_intel -lmkl_sequential -lmkl_core -lpthread
Dynamic linking of user code myprog.f and parallel or sequential Intel MKL (Call the mkl_set_threading_layer function or set value of the MKL_THREADING_LAYER environment variable to choose threaded or sequential mode):
ifort myprog.f -lmkl_rt
Static linking of myprog.f, Fortran 95 LAPACK interface, and parallel Intel MKL:
ifort myprog.f
-L$MKLPATH -I$MKLINCLUDE -I$MKLINCLUDE/ia32
-lmkl_lapack95
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a
-Wl,--end-group
-liomp5 -lpthread
Static linking of myprog.f, Fortran 95 BLAS interface, and parallel Intel MKL:
ifort myprog.f
-L$MKLPATH -I$MKLINCLUDE -I$MKLINCLUDE/ia32
-lmkl_blas95
-Wl,--start-group $MKLPATH/libmkl_intel.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a
-Wl,--end-group -liomp5 -lpthread