Visible to Intel only — GUID: GUID-34778536-F323-470F-9E64-44D6261F1271
Compiling and Building C Examples
When using an ANSI C compiler, the C example calls the LAPACK routine in lowercase with no underscore:
dgesv
oneMKL defines the dgesv routine using the standard Fortran-style: dgesv_ (lowercase, trailing underscore) on Linux* OS, or _DGESV (uppercase, leading underscore) on Windows* OS. Another LAPACK binary, such as the one compiled from Netlib Fortran reference code, may define only the Fortran entry points. If you want to link a C example against such a binary, you need to redefine the C routine name to avoid an unresolved external reference, for example:
On Linux* OS:
<cc> <compiler options> -Ddgesv=dgesv_ dgesv_ex.c <link line>
<cc> <compiler options> -Dzgelsd=zgelsd_ zgelsd_ex.c <link line>
On Windows* OS:
<cc> <compiler options> -Ddgesv=DGESV dgesv_ex.c <link line>
<cc> <compiler options> -Dzgelsd=ZGELSD zgelsd_ex.c <link line>
where <cc> is a C compiler, dgesv_ex.c and zgelsd_ex.c are oneMKL LAPACK C examples, and <link line> contains linker options and arguments, including the LAPACK library files required for your application.
To compile and build an example:
- If needed, redefine the routine to avoid an unresolved external reference.
- Run the mklvars script to set the required environment variables.
- Build the application using an ANSI C compiler. See the following example lines for reference:
- with Intel® C++ Compiler, you can use
icc -mkl cgesv_ex.c on Linux* OS, or
icl /Qmkl cgesv_ex.c on Windows* OS.
See the Linking Your Application with the Intel Math Kernel Library section of the oneMKL Developer Guide for more information on linking with the oneMKL.
with third-party compilers, you can use
cc -fopenmp -m64 -I${MKLROOT}/include cgesv_ex.c -Wl,--no-as-needed -L${MKLROOT}/lib/intel64 -lmkl_intel_lp64 -lmkl_core -lmkl_gnu_thread -lpthread -lm -ldl to compile with the GNU* C/C++ compiler on Linux* OS, or
cl cgesv_ex.c /link mkl_intel_lp64_dll.lib mkl_core_dll.lib mkl_intel_thread_dll.lib libiomp5md.lib to compile with the 64-bit version of the Microsoft* C/C++ compiler on Windows* OS.
NOTE:The examples above are linking dynamically against 64-bit oneMKL library files. To create a custom link line, use the oneMKL Link Line Advisor or refer to the oneMKL Developer Guide, section Linking Your Application with the Intel oneAPI Math Kernel Library.
- with Intel® C++ Compiler, you can use