Problem
cargo build --release fails on Linux (x86_64, including WSL) with undefined OpenSSL symbols:
rust-lld: error: undefined symbol: ERR_get_error_all
rust-lld: error: undefined symbol: SSL_ctrl
rust-lld: error: undefined symbol: SSL_get1_peer_certificate
rust-lld: error: undefined symbol: SSL_read_ex
rust-lld: error: undefined symbol: SSL_write_ex
rust-lld: error: undefined symbol: SSL_CTX_ctrl
Root Cause
Two dependencies pull native-tls (→ OpenSSL) into the link, conflicting with BoringSSL from rquest/boring-sys2:
self_update — default features include default-tls, which enables reqwest/default-tls (native-tls). Cargo unifies features, so reqwest@0.12 ends up with both rustls-tls AND native-tls.
readability — depends on reqwest@0.11 with default features (native-tls), adding a second reqwest version with OpenSSL linkage.
BoringSSL (from rquest) doesn't export OpenSSL-specific symbols like ERR_get_error_all, SSL_ctrl, etc., causing the linker to fail.
Environment
- Debian 12 / WSL2 (x86_64-unknown-linux-gnu)
- Rust stable
agent-search v0.5.0
Problem
cargo build --releasefails on Linux (x86_64, including WSL) with undefined OpenSSL symbols:Root Cause
Two dependencies pull
native-tls(→ OpenSSL) into the link, conflicting with BoringSSL fromrquest/boring-sys2:self_update— default features includedefault-tls, which enablesreqwest/default-tls(native-tls). Cargo unifies features, soreqwest@0.12ends up with bothrustls-tlsANDnative-tls.readability— depends onreqwest@0.11with default features (native-tls), adding a second reqwest version with OpenSSL linkage.BoringSSL (from
rquest) doesn't export OpenSSL-specific symbols likeERR_get_error_all,SSL_ctrl, etc., causing the linker to fail.Environment
agent-searchv0.5.0