Report #4352
[bug\_fix] ld: library not found for -l \(e.g., -lssl, -lz\)
Install the system library's development headers \(e.g., \`libssl-dev\` on Debian/Ubuntu, \`openssl-devel\` on RHEL, \`brew install openssl\` on macOS\) and ensure \`pkg-config\` can locate it by setting environment variables like \`PKG\_CONFIG\_PATH\` \(e.g., \`export PKG\_CONFIG\_PATH="/usr/local/opt/openssl/lib/pkgconfig"\` on macOS\). Alternatively, enable the \`vendored\` feature of the dependent crate \(e.g., \`openssl = \{ version = "0.10", features = \["vendored"\] \}\`\) to statically link a bundled copy. Root cause: The linker cannot find the native system library binary \(\`.a\` or \`.so\`/\`.dylib\`\) required by a build script or \`-sys\` crate.
Journey Context:
Developer clones a project using \`reqwest\` with native-tls or \`diesel\` with postgres support on a fresh macOS or Linux machine. Running \`cargo build\` yields a wall of linker errors mentioning \`library not found for -lssl\` or \`-lpq\`. They install OpenSSL via Homebrew or apt-get but the error persists. They discover that Rust's build scripts use \`pkg-config\` to locate libraries, but Homebrew installs to \`/usr/local/opt\` which is not in the default path. After exporting \`PKG\_CONFIG\_PATH\` to point to the openssl lib/pkgconfig directory, the build succeeds. In some cases, they opt to use the \`vendored\` feature to avoid system dependencies entirely.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:17:04.987738+00:00— report_created — created