Development Reference Guides


Compilation Overview

Compilation Environment

You can customize the environment used during compilation using a combination of
You can also modify the compilation by adding additional include directories for the compiler to search during compilation. See Specify Compiler Files for more information.

Default Compiler Behavior

Intel® oneAPI
processes C/C++ and SYCL source files.
Compilation can be divided into these major phases: :
  • Preprocessing
  • Semantic parsing
  • Optimization
  • Code generation
  • Linking
By default, the compiler performs the first four phases of compilation and then invokes the linker to perform the linking phase. The default linkers are
for Linux and
for Windows.
Default settings for the compiler include:
  • Optimization level O2 (
  • Floating point model = fast (
  • icpx
    C++ language standard: C++14
  • dpcpp
    C++ language standard: C++17
  • C++ runtime:
    • Linux: libstdc++, using headers and libraries installed on the system
    • Windows: Microsoft Visual C++ (MSVC) provided headers and libraries
  • SVML and specific interfaces enabled to call into the Intel libirc library

Customize the Compilation Process

Intel® oneAPI
provides multiple options to customize compilation.
Several options are available to customize preprocessing. For example, you can:
  • Specify the location of system and user header files
  • Specify macros
  • Stop the compilation process after preprocessing
  • Send preprocessed output to stdout
You can optionally use your own preprocessor to generate a preprocessed file which can then be passed to the compiler.
For a detailed list of preprocessing options, see Preprocessor Options.
Compiler options are not required to compile your program, but can be used to control different aspects of your application, such as:
  • Code generation
  • Optimization
  • Output file (type, name, location)
  • Linking properties
  • Size of the executable
  • Speed of the executable
For a detailed list of all compiler options, see Compiler Options.
You can perform the linking phase using the Intel compiler to invoke the linker (default) or by calling the linker directly.
On Linux, calling the linker directly requires explicit understanding of which specific system and Intel libraries need to be linked in, as they will need to be passed directly to the linker.
To prevent default linking at compilation time, use the
option. You must then explicitly pass along the generated object on the compilation command line and the compiler will create the final binary.
You can pass options to the linker for additional control of the linking phase. See Pass Options to the Linker for additional information.

Product and Performance Information


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