crle(1) on Solnix vs Linux and the BSDs
crle is the illumos tool at /usr/bin/crle. It writes and displays a runtime linker configuration file (/var/ld/ld.config for 32-bit, /var/ld/64/ld.config for 64-bit) that ld.so.1(1) reads at process startup. Linux and the BSDs use ldconfig(8) to build a library cache or hints file instead, and the flags do not carry over.
The manual pages
- Solnix: crle(1) from
pkgs.solnix.illumos-world-man· illumos.org - Linux: ldconfig(8) man-pages-6.18 (different command, similar job)
- FreeBSD: ldconfig(8) 15.1-RELEASE (different command, similar job)
- OpenBSD: ldconfig(8) 8.0 (different command, similar job)
- NetBSD: ldconfig(8) 11.0 (different command, similar job)
What Solnix runs
A default Solnix system runs the illumos crle at /usr/bin/crle. No other variants are shipped. The counterparts are ldconfig(8) pages with a different name and similar purpose, so this page compares the model and everyday tasks, not flag for flag. The trimmed Solnix text does not describe every option (for example -e, -i, -g, -l, -s and -u in detail).
Differences
| Compared with | Topic | What differs |
|---|---|---|
| all four | what is configured | crle creates and displays a configuration file holding default search paths, trusted directories, environment variables, a directory cache and alternative objects. The ldconfig tools only build a library cache or hints file, and Linux ldconfig also updates library links. Source: Solnix crle(1) DESCRIPTION (configuration file contents); Linux ldconfig(8) DESCRIPTION; FreeBSD, OpenBSD, NetBSD ldconfig(8) DESCRIPTION |
| Linux, OpenBSD, NetBSD | file locations | crle uses /var/ld/ld.config (32-bit) and /var/ld/64/ld.config (64-bit). Linux ldconfig uses /etc/ld.so.cache and /etc/ld.so.conf. OpenBSD and NetBSD use /var/run/ld.so.hints (NetBSD also reads /etc/ld.so.conf). The FreeBSD page names no path.Source: Solnix crle(1) DESCRIPTION; Linux ldconfig(8) -C, -f; OpenBSD ldconfig(8) DESCRIPTION; NetBSD ldconfig(8) DESCRIPTION |
| all four | showing current state | Running crle with no arguments, or with just -c, displays the configuration, any system defaults and the command line that regenerates it. Linux uses ldconfig -p. FreeBSD, OpenBSD and NetBSD use ldconfig -r.Source: Solnix crle(1) DESCRIPTION; Linux ldconfig(8) -p; FreeBSD ldconfig(8) -r; OpenBSD ldconfig(8) -r; NetBSD ldconfig(8) -r |
| Linux | -r meaning | On Linux, ldconfig -r root changes the root directory. On FreeBSD, OpenBSD and NetBSD, -r only lists the hints file and modifies nothing. crle has no -r in its synopsis.Source: Linux ldconfig(8) -r; FreeBSD ldconfig(8) -r; OpenBSD ldconfig(8) -r; NetBSD ldconfig(8) -r; Solnix crle(1) SYNOPSIS |
| Linux, FreeBSD | -f meaning | On Solnix, crle -f flags sets the flags passed to dldump(3C) when creating alternative objects (default RTLD_REL_RELATIVE). On Linux, ldconfig -f conf names a different config file. On FreeBSD, -f hints_file names a different hints file.Source: Solnix crle(1) DESCRIPTION (last paragraph); Linux ldconfig(8) -f; FreeBSD ldconfig(8) -f |
| Linux, NetBSD | -c meaning | Solnix crle -c conf names the configuration file to display or create. On Linux, ldconfig -c fmt selects the cache format. On NetBSD, -c skips the directories listed in /etc/ld.so.conf.Source: Solnix crle(1) DESCRIPTION; Linux ldconfig(8) --format, -c; NetBSD ldconfig(8) -c |
| FreeBSD, OpenBSD, NetBSD | -s meaning | Solnix crle -s dir adds a trusted directory to the configuration. On OpenBSD, ldconfig -s skips /usr/lib. On NetBSD, -s skips /usr/lib and the /etc/ld.so.conf directories. FreeBSD accepts -s but ignores it.Source: Solnix crle(1) DESCRIPTION (Trusted Directories, -s and -u); OpenBSD ldconfig(8) -s; NetBSD ldconfig(8) -s; FreeBSD ldconfig(8) historic options |
| Linux, FreeBSD | -i meaning | The Solnix synopsis shows -i name, which takes an argument. Linux ldconfig -i ignores the auxiliary cache. FreeBSD ldconfig -i turns off the security checks on directories. The trimmed Solnix text does not describe -i.Source: Solnix crle(1) SYNOPSIS; Linux ldconfig(8) -i; FreeBSD ldconfig(8) -i |
| all four | adding library directories | On Solnix, -l dir adds to the default search path and -s dir adds a trusted directory; both are usually combined with -u so system defaults are kept. The ldconfig tools take directories as command-line operands, and Linux also reads /etc/ld.so.conf.Source: Solnix crle(1) DESCRIPTION (Default Search Paths, Trusted Directories); Linux ldconfig(8) DESCRIPTION; FreeBSD ldconfig(8) SYNOPSIS; OpenBSD ldconfig(8) SYNOPSIS; NetBSD ldconfig(8) SYNOPSIS |
| all four | alternative objects and runtime-linker environment | crle can record alternative objects (-a, -A, -I, -G, with -o for the output directory) and environment variables for the runtime linker (-e, -E) in the configuration file. None of the ldconfig pages describe an equivalent.Source: Solnix crle(1) SYNOPSIS, OPTIONS -a, -A, DESCRIPTION (Environment Variables, Alternative Objects); Linux, FreeBSD, OpenBSD, NetBSD ldconfig(8) OPTIONS |
| all four | 32-bit and 64-bit handling | crle keeps separate 32-bit and 64-bit configuration files and takes -64 to work on the 64-bit one. FreeBSD ldconfig -32 generates hints for 32-bit libraries on 64-bit systems. Linux describes /lib64 and /usr/lib64 as trusted directories for 64-bit libraries on some architectures.Source: Solnix crle(1) -64 and DESCRIPTION; FreeBSD ldconfig(8) -32; Linux ldconfig(8) DESCRIPTION |
| all four | testing and bypassing a configuration | Solnix documents LD_CONFIG, LD_CONFIG_32 and LD_CONFIG_64 to point the runtime linker at another file, and LD_NOCONFIG to ignore configuration files. A bad file in /var/ld can stop programs running, so test in a temporary location first. The ldconfig pages describe no equivalent variables.Source: Solnix crle(1) DESCRIPTION (LD_CONFIG family, LD_NOCONFIG); Linux, FreeBSD, OpenBSD, NetBSD ldconfig(8) ENVIRONMENT/DESCRIPTION |
| OpenBSD, NetBSD | run at boot | OpenBSD and NetBSD say ldconfig is typically run as part of the boot sequence, and OpenBSD reads extra directories from shlib_dirs in /etc/rc.conf.local. The crle page does not say it is run at boot.Source: OpenBSD ldconfig(8) DESCRIPTION, ENVIRONMENT; NetBSD ldconfig(8) DESCRIPTION; Solnix crle(1) DESCRIPTION |
Everyday tasks
| Task | Solnix | Linux | FreeBSD | OpenBSD | NetBSD |
|---|---|---|---|---|---|
| show current configuration or cache | crle | ldconfig -p | ldconfig -r | ldconfig -r | ldconfig -r |
| add a library directory | crle -l dir (with -u to keep system defaults) | ldconfig directory | ldconfig -m directory | ldconfig -m path | ldconfig -m directory |
| add a trusted directory | crle -s dir | — | — | — | — |
| work on a 64-bit or 32-bit configuration | crle -64 | — | ldconfig -32 | — | — |
| use an alternative config or hints file for testing | crle -c conf, then set LD_CONFIG_32 or LD_CONFIG_64 | ldconfig -C cache or -f conf | ldconfig -f hints_file | — | — |
| make the runtime linker ignore configuration | set LD_NOCONFIG | — | — | — | — |
Standards
- POSIX: crle is not a POSIX.1-2024 utility.
Writing portable scripts
- Do not call ldconfig on Solnix or crle elsewhere. Branch on which tool exists, since the flags
-c,-f,-i,-rand-smean different things in each. - For one-off library paths, use LD_LIBRARY_PATH, which the Solnix, FreeBSD, OpenBSD and NetBSD pages all describe, rather than editing the system-wide configuration.
Every difference here is taken from the manual pages linked above: Solnix's published page, Linux (man-pages and the GNU and util-linux manuals), FreeBSD, OpenBSD and NetBSD. Each row names its source. Where a manual is silent, this page is too. Compiled 2026-10-26. Found a mistake? Mail hackers@lists.solnix.io.