Linking on Intel(R) 64 Architecture Systems
The following examples illustrate linking that uses Intel(R) compilers.
Most
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
.In these examples,
MKLPATH=$MKLROOT/lib
/intel64
_lin
,
MKLINCLUDE=$MKLROOT/include
.
If you successfully completed the
Scripts to Set Environment Variables 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.
- Static linking ofmyprog.fandOpenMP* threadedsupporting the LP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE-Wl,--start-group$MKLPATH/libmkl_intel_lp64.a$MKLPATH/libmkl_intel_thread.a$MKLPATH/libmkl_core.a-Wl,--end-group-liomp5-lpthread -lm
- Dynamic linking ofmyprog.fandOpenMP* threadedsupporting the LP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE-lmkl_intel_lp64-lmkl_intel_thread-lmkl_core-liomp5-lpthread -lm
- Static linking ofmyprog.fand sequential version ofsupporting the LP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE-Wl,--start-group$MKLPATH/libmkl_intel_lp64.a$MKLPATH/libmkl_sequential.a$MKLPATH/libmkl_core.a-Wl,--end-group-lpthread -lm
- Dynamic linking ofmyprog.fand sequential version ofsupporting the LP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE-lmkl_intel_lp64-lmkl_sequential-lmkl_core-lpthread -lm
- Static linking ofmyprog.fandOpenMP* threadedsupporting the ILP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE-Wl,--start-group$MKLPATH/libmkl_intel_ilp64.a$MKLPATH/libmkl_intel_thread.a$MKLPATH/libmkl_core.a-Wl,--end-group-liomp5-lpthread -lm
- Dynamic linking ofmyprog.fandOpenMP* threadedsupporting the ILP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE-lmkl_intel_ilp64-lmkl_intel_thread-lmkl_core-liomp5-lpthread -lm
- Dynamic linking of user codemyprog.fandOpenMP* threadedor sequential(Call appropriate functions or set environment variables to choose threaded or sequential mode and to set the interface):Intel® oneAPI Math Kernel Libraryifort myprog.f -lmkl_rt
- Static linking ofmyprog.f, Fortran BLAS and 95 LAPACK interfaces, andOpenMP* threadedsupporting the LP64 interface:Intel® oneAPI Math Kernel Libraryifort myprog.f-L$MKLPATH -I$MKLINCLUDE -I$MKLINCLUDE/intel64/lp64-lmkl_lapack95_lp64-Wl,--start-group$MKLPATH/libmkl_intel_lp64.a$MKLPATH/libmkl_intel_thread.a$MKLPATH/libmkl_core.a-Wl,--end-group-liomp5-lpthread -lm
- Static linking ofmyprog.candthreaded with Intel® Threading Building Blocks (Intel® TBB), provided that theIntel® oneAPI Math Kernel LibraryTBBROOTenvironment variableis defined:icc myprog.c -I$MKLINCLUDE -Wl,--start-group $MKLPATH/libmkl_intel_lp64.a $MKLPATH/libmkl_tbb_thread.a $MKLPATH/libmkl_core.a -Wl,--end-group -L$TBBROOT/lib/intel64/gcc.4.8 -ltbb -lstdc++ -lpthread -lm
- Dynamic linking ofmyprog.candthreaded with Intel® TBB, provided that theIntel® oneAPI Math Kernel LibraryLD_LIBRARY_PATHenvironment variable contains the path to Intel® TBB library:icc myprog.c -I$MKLINCLUDE -L$MKLPATH -lmkl_intel_lp64 -lmkl_tbb_thread -lmkl_core -lstdc++ -lpthread -lm