---
name: "ldconfig"
section: "8"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd"]
url: "https://new.carta.tech/ldconfig"
---

# ldconfig(8)

configure dynamic linker run-time bindings

## NAME

ldconfig - configure dynamic linker run-time bindings

## SYNOPSIS

**/sbin/ldconfig** \[**-nNvVX**\] \[**-C**  *cache*\] \[**-f**  *conf*\] \[**-r**  *root*\] \[**-t**  *tunconf*\] *directory* ...

**/sbin/ldconfig** **-l** \[**-v**\] *library* ...

**/sbin/ldconfig** **-p**

## DESCRIPTION

**ldconfig** creates the necessary links and cache to the most recent shared libraries found in the directories specified on the command line, in the file */etc/ld.so.conf*, and in the trusted directories, */lib* and */usr/lib*. On some 64-bit architectures such as x86-64, */lib* and */usr/lib* are the trusted directories for 32-bit libraries, while */lib64* and */usr/lib64* are used for 64-bit libraries.

The cache is used by the run-time linker, *ld.so* or *ld-linux.so*. **ldconfig** checks the header and filenames of the libraries it encounters when determining which versions should have their links updated. **ldconfig** should normally be run by the superuser as it may require write permission on some root owned directories and files.

**ldconfig** will look only at files that are named *lib\*.so\** (for regular shared objects) or *ld-\*.so\** (for the dynamic loader itself). Other files will be ignored. Also, **ldconfig** expects a certain pattern to how the symbolic links are set up, like this example, where the middle file (**libfoo.so.1** here) is the SONAME for the library:

```
libfoo.so -> libfoo.so.1 -> libfoo.so.1.12
```

Failure to follow this pattern may result in compatibility issues after an upgrade.

If the file */etc/tunables.conf* exists, it contains tunables to be applied to all processes. These tunables are stored in the cache and applied to every process at its startup.

## OPTIONS

- **--format=***fmt* **-c** *fmt*

  (Since glibc 2.2) Use cache format *fmt*, which is one of **old**, **new**, or **compat**. Since glibc 2.32, the default is **new**. Before that, it was **compat**.

- **-C** *cache*

  Use *cache* instead of */etc/ld.so.cache*.

- **-f** *conf*

  Use *conf* instead of */etc/ld.so.conf*.

- **--ignore-aux-cache** **-i**

  (Since glibc 2.7) Ignore auxiliary cache file.

- **-l**

  (Since glibc 2.2) Interpret each operand as a library name and configure its links. Intended for use only by experts.

- **-n**

  Process only the directories specified on the command line; don't process the trusted directories, nor those specified in */etc/ld.so.conf*. Implies **-N**.

- **-N**

  Don't rebuild the cache. Unless **-X** is also specified, links are still updated.

- **--print-cache** **-p**

  Print the lists of directories and candidate libraries stored in the current cache.

- **-r** *root*

  Change to and use *root* as the root directory.

- **-t** *tunconf*

  Use *tunconf* instead of */etc/tunables.conf*.

- **--verbose** **-v**

  Verbose mode. Print current version number, the name of each directory as it is scanned, and any links that are created. Overrides quiet mode.

- **--version** **-V**

  Print program version.

- **-X**

  Don't update links. Unless **-N** is also specified, the cache is still rebuilt.

## FILES

- */lib/ld.so*

  is the run-time linker/loader.

- */etc/ld.so.conf*

  See [**ld.so.conf**(5)](/ld.so.conf/5.md).

- */etc/tunables.conf*

  See [**tunables.conf**(5)](/tunables.conf/5.md).

- */etc/ld.so.cache*

  contains an ordered list of libraries found in the directories specified in */etc/ld.so.conf*, as well as those found in the trusted directories, and any tunables listed in */etc/tunables.conf*.

## SEE ALSO

[**ldd**(1)](/ldd/1.md), [**ld.so**(8)](/ld.so/8.md), [**ld.so.conf**(5)](/ld.so.conf/5.md)
