Developer Reference

  • 2022.1
  • 12/20/2021
  • Public Content

Compiling and Building C Examples

When using an ANSI C compiler, the C example calls the LAPACK routine in lowercase with no underscore:
oneMKL defines the
routine using the standard Fortran-style:
(lowercase, trailing underscore) on Linux* OS, or
(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>
is a C compiler,
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:
  1. If needed, redefine the routine to avoid an unresolved external reference.
  2. Run the
    script to set the required environment variables.
  3. 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.
      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

Product and Performance Information


Performance varies by use, configuration and other factors. Learn more at