# Invoking the Compiler

## Requirements Before Using the Command Line

You may need to set certain environment variables before using the command line. For more information, see Specifying the Location of Compiler Components.

## Using the Compiler from the Command Line

Use the compiler with the OS/language specific invocations below.

### Note

You can also use the compiler from within the IDE. For more information on using Microsoft Visual Studio*, see Using Microsoft Visual Studio. For information on using Xcode*, see Using Xcode. For information on using Eclipse*, see Using Eclipse.

Linux:

Invoke the compiler using icc/icpc to compile IL0 C/C++ source files.

- When you invoke the compiler with icl the compiler builds C source files using C libraries and C include files. If you use icc with a C++ source file, it is compiled as a C++ file. Use icc to link C object files.
- When you invoke the compiler with icpc the compiler builds C++ source files using C++ libraries and C++ include files. If you use icpc with a C source file, it is compiled as a C++ file. Use icpc to link C++ object files.

The icc/icpc command does the following:

- Compiles and links the input source file(s).
- Produces one executable file, a.out, in the current directory.

macOS*:

Invoke the compiler using icc/icpc to compile C/C++ source files.

- When you invoke the compiler with icl, the compiler builds C source files using C libraries and C include files. If you use icc with a C++ source file, it is compiled as a C++ file. Use icc to link C object files.
- When you invoke the compiler with icpc the compiler builds C++ source files using C++ libraries and C++ include files (libc++ library is used by default). If you use icpc with a C source file, it is compiled as a C++ file. Use icpc to link C++ object files.

The icc/icpc command does the following:

- Compiles and links the input source file(s).
- Produces one executable file, a.out, in the current directory.

Windows:

You can invoke the compiler on the command line using the icl command. This command:

- Compiles and links the input source file(s).
- Produces object file(s) and assigns the names of the respective source file(s), but with a .obj extension.
- Produces one executable file and assigns it the name of the first input file on the command line, but with a .exe extension.
- Places all the files in the current directory.

When compilation occurs with the compiler, many tools may be called to complete the task that may reproduce diagnostics unique to the given tool. For instance, the linker may return a message if it cannot resolve a global reference. The watch option can help clarify which component is generating the error.

## Command Line Syntax

When you invoke the compiler, the syntax is:

    // (Linux)
    {icc|icpc} [options] file1 [file2...]

    // (macOS*)
    {icc|icpc} [options] file1 [file2...]

    // (Windows)
    icl [options] file1 [file2...][/link link_options]

Argument | Description
--- | ---
`options` | Indicates one or more command line options. On Linux and macOS* systems, the compiler recognizes one or more letters preceded by a hyphen (-). On Windows, options are preceded by a slash (/). This includes linker options. Options are not required when invoking the compiler. The default behavior of the compiler implies that some options are ON by default when invoking compiler. ### Note The compiler recognizes Language Extensions for Offloading in the source program and builds a heterogeneous binary that runs on the target and host. If your program includes these language extensions and you do not want to build a heterogeneous binary, specify the negative form of the -qoffload (Linux) or /Qoffload (Windows) compiler option. For more information, see the qoffload, Qoffload compiler option.
`file1, file2...` | Indicates one or more files to be processed by the compiler. You can specify more than one file, using space as a delimiter for multiple files.
/link (Windows) | All options following /link are passed to the linker. Compiler options must precede link if they are not to be passed to the linker.

## Other Methods for Using the Command Line to Invoke the Compiler

- Using makefiles from the Command Line: Use makefiles to specify a number of files with various paths and to save this information for multiple compilations. For more information on using makefiles, see Using Makefiles to Compile Your Application.
- Using a Batch File from the Command Line: Create and use a .bat file to consistently execute the compiler with a desired set of options instead of retyping the command each time you need to recompile.

Parent topic: Using the Command Line

## See Also

Specifying the Location of Compiler Components
Understanding File Extensions
Using Makefiles to Compile Your Application
watch compiler option
qoffload compiler option