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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions