# Specify the Location of Compiler Components

Before you invoke the compiler, you may need to set certain environment variables that define the location of compiler-related components. The compiler includes environment configuration scripts to configure your build and development environment variables:

- On Linux, and macOS, the file is a shell script called `setvars.sh`. Note that macOS is only available for ifort.
- On Windows, the file is a batch file called `setvars.bat`.

## Linux and macOS

Set the environment variables before using the compiler by sourcing the shell script `setvars.sh`. Depending on the shell, you can use the `source` command or a . (dot) to source the shell script, according to the following rules for a `.sh` script:

Using source:

    source /<install-dir>/setvars.sh <arg1> <arg2> … <argn>

Example:

    source /opt/intel/oneapi/setvars.sh intel64

Using . (dot):

    . /<install-dir>/setvars.sh <arg1> <arg2> … <argn>

Example:

    . /opt/intel/oneapi/setvars.sh intel64

Use `source /<install-dir>/setvars.sh --help` for more `setvars` usage information.

The compiler environment script file accepts an optional target architecture argument <arg>:

- `intel64`: Generate code and use libraries for Intel® 64 architecture-based targets.
- `ia32`: Generate code and use libraries for IA-32 architecture-based targets.

  ### Note

  32 bit targets are not supported for ifx.

If you want the `setvars.sh` script to run automatically in all of your terminal sessions, add the source `setvars.sh` command to your startup file. For example, inside your `.bash_profile` entry for Intel® 64 architecture targets.

If the proper environment variables are not set, errors similar to the following may appear when attempting to execute a compiled program:

    ./a.out: error while loading shared libraries:
    libimf.so: cannot open shared object file: No such file or directory

## Windows

Under normal circumstances, you do not need to run the `setvars.bat` batch file. The terminal shortcuts in the Windows Start menu, Intel oneAPI command prompt for <target architecture> for Visual Studio <year>, set these variables automatically.

For additional information, see Use the Command Line on Windows.

You need to run the `setvars` batch file if a command line is opened without using one of the provided Command Prompt menu items in the Start menu, or if you want to use the compiler from a script of your own.

The `setvars` batch file inserts DLL directories used by the compiler and libraries at the beginning of the existing `Path`. Because these directories appear first, they are searched before any directories that were part of the original `Path` provided by Windows (and other applications). This is especially important if the original `Path` includes directories with files that have the same names as those added by the compiler and libraries.

The `setvars` batch file takes multiple optional arguments; the following two arguments are recognized for compiler and library initialization:

    <install-dir>\setvars.bat [<arg1>] [<arg2>]

Where <arg1> is optional and can be one of the following:

- `intel64`: Generate code and use libraries for Intel® 64 architecture (host and target).
- `ia32`: Generate code and use libraries for IA-32 architecture (host and target).

The <arg2> is optional. If specified, it is one of the following:

- `vs2022`: Microsoft Visual Studio 2022
- `vs2019`: Microsoft Visual Studio 2019
- `vs2017`: Microsoft Visual Studio 2017.

  ### Note

  Support for Microsoft Visual Studio 2017 is deprecated as of the Intel® oneAPI 2022.1 release and will be removed in a future release.

If <arg1> is not specified, the script uses the `intel64` argument by default. If <arg2> is not specified, the script uses the highest installed version of Microsoft Visual Studio detected during the installation procedure.

Parent topic: Use the Command Line

## See Also

oneAPI Development Environment Setup
Configure Your CPU or GPU System