es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ld: biblioteca no encontrada para -lpq al construir rust en macOS

Cuando construyo mi proyecto de rust en macOS con Apple Silicon utilizando este comando:

CARGO_HTTP_MULTIPLEXING=false cargo build

muestra un error como este:

  = nota: ld: biblioteca no encontrada para -lpq
          clang: error: el comando del enlazador falló con el código de salida 1 (utilice -v para ver la invocación)

He intentado instalar

brew install libpq
brew link --force libpq

aún no se ha solucionado este problema, ¿qué debo hacer para solucionar este problema? ¿Es posible que la biblioteca de PostgreSQL no sea compatible con Apple Silicon (Apple M1 Pro) en este momento? Estas son las dependencias de mi proyecto:

[package]
name = "reddwarf_dict"
version = "0.1.0"
edition = "2018"

# Ver más claves y sus definiciones en https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rocket = { version = "0.5.0-rc.1", features = ["json"] }
serde = { version = "1.0.64", features = ["derive"] }
serde_json = "1.0.64"
# database
diesel = { version = "1.4.7", features = ["postgres"] }
dotenv = "0.15.0"
chrono = "0.4"
log = "0.4"
env_logger = "0.9.0"
config = "0.11"
rust_wheel = "0.1.0"
Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con el enlazador que no encuentra la biblioteca libpq. Es posible que la biblioteca de PostgreSQL no sea compatible con Apple Silicon (M1 Pro) en este momento.
    Hay algunas cosas que puedes probar:

    1. Verifica nuevamente si has instalado la versión correcta de la biblioteca libpq para Apple Silicon. Es posible que quieras verificar si hay una versión específica para M1 disponible.
    2. Asegúrate de que la biblioteca instalada realmente se esté enlazando en tu proceso de compilación. Puedes verificar esto ejecutando el comando ldd en tu archivo binario para mostrar las bibliotecas que se han enlazado.
    3. Puedes intentar agregar manualmente la ruta de la biblioteca libpq en la opción rustc-link-search de tu archivo Cargo.toml. Por ejemplo:
      [package]
      name = "reddwarf_dict"
      version = "0.1.0"
      edition = "2018"
      
      [dependencies]
      rocket = { version = "0.5.0-rc.1", features = ["json"] }
      serde = { version = "1.0.64", features = ["derive"] }
      serde_json = "1.0.64"
      # database
      diesel = { version = "1.4.7", features = ["postgres"] }
      dotenv = "0.15.0"
      chrono = "0.4"
      log = "0.4"
      env_logger = "0.9.0"
      config = "0.11"
      rust_wheel = "0.1.0"
      
      [build]
      rustc-link-search = [
          "/ruta/hacia/la/biblioteca/libpq",
      ]
      
    4. Si ninguna de las soluciones anteriores funciona, es posible que debas esperar a que PostgreSQL u otras bibliotecas publiquen versiones compatibles con M1, o considerar usar una biblioteca o plataforma de bases de datos diferente que sea compatible con Apple Silicon.

Comments are closed.