ld.so.1(1) on Solnix vs Linux and the BSDs

On Solnix the runtime linker is the illumos /lib/ld.so.1, which the kernel runs as the interpreter of dynamic executables. Run directly, it takes only -e envar, so Linux-style options such as --list or --library-path do not exist. Configuration comes from crle(1)-built files under /var/ld, not ldconfig hints or ld.so.cache.

What Solnix runs

A default Solnix system runs the illumos /lib/ld.so.1. The bundle lists no other variants. The page is published in pkgs.solnix.illumos-world-man. The bundle text is trimmed, so only the parts shown are compared here.

Differences

Compared withTopicWhat differs
Linuxcommand-line optionsRun directly, Solnix ld.so.1 accepts only -e envar, then the object and its arguments. Linux ld.so has --list, --library-path, --preload, --audit, --inhibit-cache, --argv0 and others. Solnix sets such behaviour through environment variables.
Source: Solnix ld.so.1(1) SYNOPSIS, Command Line Usage (-e); Linux ld.so(8) SYNOPSIS, OPTIONS
FreeBSD, OpenBSD, NetBSDdirect invocation optionsSolnix documents a direct-invocation form with one option, -e envar, to set a linker environment variable. The FreeBSD, OpenBSD and NetBSD pages show no SYNOPSIS or options for running the linker directly; they only describe environment variables.
Source: Solnix ld.so.1(1) -e; FreeBSD rtld(1) DESCRIPTION; OpenBSD ld.so(1) DESCRIPTION; NetBSD ld.elf_so(1) ENVIRONMENT
all fourlinker path and nameThe Solnix interpreter is /lib/ld.so.1. Linux uses /lib/ld-linux.so.*, FreeBSD names it ld-elf.so.1 (also ld.so and rtld), and OpenBSD and NetBSD name it ld.so and ld.elf_so. A hard-coded interpreter path will not carry across.
Source: Solnix ld.so.1(1) SYNOPSIS; Linux ld.so(8) SYNOPSIS; FreeBSD rtld(1) NAME; OpenBSD ld.so(1) NAME; NetBSD ld.elf_so(1) NAME
Linux, FreeBSD, OpenBSDconfiguration file vs cache or hintsSolnix reads /var/ld/ld.config (32-bit) or /var/ld/64/ld.config (64-bit), built with crle(1) and overridable with LD_CONFIG. Linux uses /etc/ld.so.cache from ldconfig(8). FreeBSD and OpenBSD use an ldconfig(8) hints file.
Source: Solnix ld.so.1(1) DESCRIPTION, LD_CONFIG; Linux ld.so(8) search order (4); FreeBSD rtld(1) search order 5; OpenBSD ld.so(1) DESCRIPTION
all fourdefault library directoriesSolnix 32-bit objects default to /lib then /usr/lib; 64-bit objects use /lib/64 then /usr/lib/64. Linux uses /lib64 and /usr/lib64 on some 64-bit architectures. OpenBSD and NetBSD list only /usr/lib as the final default.
Source: Solnix ld.so.1(1) DESCRIPTION (search path); Linux ld.so(8) (5); OpenBSD ld.so(1) list item 4; NetBSD ld.elf_so(1) Finding objects item 3
all foursearch orderSolnix searches the runpath recorded in the object, then the defaults, with LD_LIBRARY_PATH directories searched before the defaults. Linux and FreeBSD check DT_RPATH first. OpenBSD searches LD_LIBRARY_PATH first; NetBSD does LD_LIBRARY_PATH and ld.so.conf first.
Source: Solnix ld.so.1(1) DESCRIPTION (default search paths); Linux ld.so(8) (1)-(5); FreeBSD rtld(1) list; OpenBSD ld.so(1) list; NetBSD ld.elf_so(1) Finding objects
FreeBSD32-bit environment variablesSolnix selects 32-bit or 64-bit scope with a _32 or _64 suffix, e.g. LD_BIND_NOW_64, and a suffixed variable overrides the plain one. FreeBSD uses an LD_32_ prefix for 32-bit objects, e.g. LD_32_TRACE_LOADED_OBJECTS.
Source: Solnix ld.so.1(1) ENVIRONMENT VARIABLES; FreeBSD rtld(1) DESCRIPTION (LD_32_)
all fourbinding mode variablesSolnix has LD_BIND_LAZY and LD_BIND_NOW; if both are set, LD_BIND_NOW wins. OpenBSD and NetBSD document LD_BIND_NOW only. The Linux and FreeBSD text shown does not cover LD_BIND_LAZY. Lazy binding is the Solnix default.
Source: Solnix ld.so.1(1) LD_BIND_LAZY, LD_BIND_NOW; OpenBSD ld.so(1) LD_BIND_NOW; NetBSD ld.elf_so(1) LD_BIND_NOW
all fourpath expansion tokensThe Solnix text shown does not list $ORIGIN-style tokens. Linux expands $ORIGIN, $LIB and $PLATFORM. FreeBSD adds $OSNAME and $OSREL. NetBSD also lists $HWCAP and $ISALIST, both unimplemented. Check the full Solnix page before using tokens.
Source: Linux ld.so(8) Dynamic string tokens; FreeBSD rtld(1) DESCRIPTION; NetBSD ld.elf_so(1) Finding objects
OpenBSDlisting dependenciesOpenBSD ld.so exits after printing the loaded objects when LD_TRACE_LOADED_OBJECTS is set, which ldd(1) uses. The Solnix text shown points to ldd(1) for dependency and initialization order and documents no equivalent variable.
Source: OpenBSD ld.so(1) LD_TRACE_LOADED_OBJECTS; Solnix ld.so.1(1) DESCRIPTION (ldd(1))
NetBSDdlopen search pathNetBSD dlopen(3) uses the DT_RPATH and DT_RUNPATH of the main binary, whichever object made the call. The Solnix text shown does not state this rule for dlopen(3C).
Source: NetBSD ld.elf_so(1) Finding objects; Solnix ld.so.1(1) DESCRIPTION

Everyday tasks

TaskSolnixLinuxFreeBSDOpenBSDNetBSD
list a program's shared-object dependenciesldd(1)ld.so --list—LD_TRACE_LOADED_OBJECTS (used by ldd(1))—
search a directory first for one runLD_LIBRARY_PATH=dirld.so --library-path pathLD_LIBRARY_PATH=dirLD_LIBRARY_PATH=dirLD_LIBRARY_PATH=dir
change system-wide linker search configurationcrle(1) (writes /var/ld/ld.config)ldconfig(8), /etc/ld.so.confldconfig(8) hints fileldconfig(8)ld.so.conf(5)
bind all symbols at startupLD_BIND_NOW=1——LD_BIND_NOW=1LD_BIND_NOW=1

Standards

  • POSIX: ld.so.1 is not a POSIX.1-2024 utility.
  • OpenBSD: HISTORY: the shared library model first appeared in SunOS 4.0.
  • NetBSD: HISTORY: the ELF shared library model first appeared in Sys V R4; the path expansion variables first appeared in Solaris 10 and NetBSD 5.0.

Writing portable scripts

  • Do not run the linker by name in scripts. Use ldd(1) or let the kernel pick the interpreter, because the path and the options differ on every system.
  • Set LD_LIBRARY_PATH and LD_BIND_NOW as environment variables for portable behaviour; avoid Linux ld.so options and Solnix-only _32/_64 suffixes.

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.