ldd(1) on Solnix vs Linux and the BSDs
On Solnix, ldd is the illumos ldd at /usr/bin/ldd. It uses the runtime linker ld.so.1 and does not execute the inspected object. Plain `ldd file` works everywhere. Option letters do not: -f forces a check of an insecure executable on Solnix but is a format string on FreeBSD and NetBSD, and the other systems lack Solnix's -U, -e, -c, -L and -i.
The manual pages
What Solnix runs
A default Solnix system runs the illumos ldd at /usr/bin/ldd. No other variants are shipped. The bundle text for the Solnix page is trimmed, so the descriptions of -l, -s and -v, the USAGE sections, and any EXIT STATUS section are not available here.
Differences
| Compared with | Topic | What differs |
|---|---|---|
| FreeBSD, NetBSD | -f meaning | Solnix ldd -f forces ldd to process an executable it considers not secure; it takes no argument. On FreeBSD and NetBSD, -f takes a format string that customizes the output. A script passing -f format to Solnix ldd is wrong.Source: Solnix ldd(1) -f; FreeBSD ldd(1) SYNOPSIS, DESCRIPTION; NetBSD ldd(1) -f |
| Linux, OpenBSD | -f absent | Linux ldd and OpenBSD ldd have no -f. Only Solnix has the force-insecure meaning; the Linux and OpenBSD manuals document nothing comparable.Source: Linux ldd(1) OPTIONS; OpenBSD ldd(1) SYNOPSIS; Solnix ldd(1) -f |
| Linux, FreeBSD, OpenBSD | whether the target is executed | The Solnix page says the inspected objects are not executed. FreeBSD ldd runs the executable in a child process. OpenBSD ldd sets LD_TRACE_LOADED_OBJECTS and then execs the program. The Linux page warns some versions may execute the program and says never to run ldd on an untrusted executable. Source: Solnix ldd(1) DESCRIPTION; FreeBSD ldd(1) IMPLEMENTATION NOTES; OpenBSD ldd(1) DESCRIPTION; Linux ldd(1) Security |
| Linux | -d and -r relocation checks | Solnix -d checks immediate references and -r checks immediate and lazy references; -d and -r are mutually exclusive. Linux -d (--data-relocs) and -r (--function-relocs) report missing objects, and the Linux page does not say they are exclusive. Solnix adds -p and -w to expose unresolved parent/external and weak references.Source: Solnix ldd(1) -d, -r, -p, -w; Linux ldd(1) -d, --data-relocs, -r, --function-relocs |
| Linux | -u and -U unused dependencies | Solnix -u displays unused objects and -U also shows unreferenced dependencies and unused search paths; -U is a superset of -u and the two cannot be combined. Linux has only -u/--unused, which prints unused direct dependencies, and no -U.Source: Solnix ldd(1) -U, -u; Linux ldd(1) -u, --unused |
| Linux, NetBSD | -v meaning | Linux -v/--verbose prints all information, including symbol versioning. NetBSD -v turns on verbose mode. Solnix lists -v in its synopsis, but its description is in the trimmed part of the page, so the manual text in the bundle does not say what it does.Source: Solnix ldd(1) SYNOPSIS; Linux ldd(1) -v, --verbose; NetBSD ldd(1) -v |
| all four | Solnix-only options | Solnix ldd has -e envar (set an environment variable such as LD_PRELOAD or LD_DEBUG for the inspection), -c (ignore configuration files, see crle(1)), -L (enable lazy loading) and -i (show initialization order). None of the four counterpart pages document these options.Source: Solnix ldd(1) -e, -c, -L, -i; counterpart ldd(1) SYNOPSIS pages |
| FreeBSD | -a | FreeBSD -a lists all objects needed by each loaded object. Solnix has no -a. By default Solnix ldd lists all shared objects that would be loaded when the file is loaded.Source: FreeBSD ldd(1) -a; Solnix ldd(1) SYNOPSIS, DESCRIPTION |
| NetBSD | -o and format strings | NetBSD -o is shorthand for a format that makes ldd output resemble nm -o, and cannot be combined with -f. Solnix has no -o and no format-string option. NetBSD's default library format is '\t-l%o.%m => %p\n'.Source: NetBSD ldd(1) -o, -f; Solnix ldd(1) SYNOPSIS |
| Linux | output format | The Linux page shows each line as name => path (hexadecimal load address), and special entries such as linux-vdso. The Solnix text in the bundle does not show an output sample, so line format cannot be compared from it. Do not assume load addresses are printed. Source: Linux ldd(1) DESCRIPTION; Solnix ldd(1) DESCRIPTION |
| all four | no dependencies and execute permission | Solnix ldd succeeds quietly when a file has no dependencies and warns when a shared object lacks execute permission. It expects execute permission on the objects it inspects. The counterpart pages do not describe either case. Source: Solnix ldd(1) DESCRIPTION; counterpart ldd(1) DESCRIPTION sections |
| OpenBSD, NetBSD | exit status | OpenBSD and NetBSD document exit 0 on success and >0 on error. The Linux and FreeBSD pages have no EXIT STATUS section. The visible Solnix text gives no exit codes, but says ldd prints an error message when processing fails. Source: OpenBSD ldd(1) EXIT STATUS; NetBSD ldd(1) EXIT STATUS; Solnix ldd(1) DESCRIPTION |
Standards
- POSIX: ldd is not a POSIX.1-2024 utility.
- FreeBSD: HISTORY: a ldd utility first appeared in SunOS 4.0; it appeared in its current form in FreeBSD 1.1.
- NetBSD: HISTORY: a ldd utility first appeared in SunOS 4.0; it appeared in its current form in NetBSD 0.9A.
Writing portable scripts
- Use only `ldd file...` with no options in portable scripts.
-f,-v,-d,-rand-umean different things on, or are missing from, one or more of these systems. - Do not run ldd on an untrusted file on any system. The Linux page says it may execute the program, and FreeBSD and OpenBSD run the program as part of ldd's operation.
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.