Skip to content

Linux/WSL build fails: BoringSSL vs OpenSSL linking conflict #1

@andrey-golovko

Description

@andrey-golovko

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:

  1. 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.
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions