# Specifying 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 Intel® C++ Compiler Classic 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`.
- On Windows*, the file is a batch file called `setvars.bat`.

### Note

If you are using older Intel® Parallel Studio XE or Intel® System Studio bits, you need to use `compilervars` instead of `setvars`.

The following information is operating system dependent.

## 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 rule for a `.sh` script:

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

    # examples: (assuming <install-dir> is /opt/intel/oneapi)
    prompt> source /opt/intel/oneapi/setvars.sh intel64
    prompt> . /opt/intel/oneapi/setvars.sh intel64

### Note

Type: `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.

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:

    # set environment vars for Intel®  C++ Compiler
    source <install-dir>/setvars.sh intel64

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

    # for C++
    ./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 Using the Command Line on Windows.

### Note

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:

- `vs2019`: Microsoft Visual Studio* 2019
- `vs2017`: Microsoft Visual Studio 2017

### Note

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: Using the Command Line