Search Paths for gnatbind (GNAT User’s Guide for Native Platforms)

#### 4.5.4 Search Paths for `gnatbind` ¶

The binder takes the name of an ALI file as its argument and needs to locate source files as well as other ALI files to verify object consistency.

For source files, it follows exactly the same search rules as `gcc` (see Search Paths and the Run-Time Library (RTL)). For ALI files the directories searched are:

- The directory containing the ALI file named in the command line, unless the switch `-I-` is specified.
- All directories specified by `-I` switches on the `gnatbind` command line, in the order given.
- Each of the directories listed in the text file whose name is given by the `ADA_PRJ_OBJECTS_FILE` environment variable.

  `ADA_PRJ_OBJECTS_FILE` is normally set by gnatmake or by the gnat driver when project files are used. It should not normally be set by other means.

- Each of the directories listed in the value of the `ADA_OBJECTS_PATH` environment variable. Construct this value exactly as the `PATH` environment variable: a list of directory names separated by colons (semicolons when working with the NT version of GNAT).
- The content of the `ada_object_path` file which is part of the GNAT installation tree and is used to store standard libraries such as the GNAT Run-Time Library (RTL) unless the switch `-nostdlib` is specified. See Installing a library

In the binder the switch `-I` is used to specify both source and library file paths. Use `-aI` instead if you want to specify source paths only, and `-aO` if you want to specify library paths only. This means that for the binder `-I`dir'` is equivalent to `-aI`dir'` `-aO``dir'`. The binder generates the bind file (a C language source file) in the current working directory.

The packages `Ada`, `System`, and `Interfaces` and their children make up the GNAT Run-Time Library, together with the package GNAT and its children, which contain a set of useful additional library functions provided by GNAT. The sources for these units are needed by the compiler and are kept together in one directory. The ALI files and object files generated by compiling the RTL are needed by the binder and the linker and are kept together in one directory, typically different from the directory containing the sources. In a normal installation, you need not specify these directory names when compiling or binding. Either the environment variables or the built-in defaults cause these files to be found.

Besides simplifying access to the RTL, a major use of search paths is in compiling sources from multiple directories. This can make development environments much more flexible.