Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
¿Por qué rustc no incluyó libmariadb en el binario de lanzamiento?

Pensé que el compilador de óxido usa enlaces estáticos e incluye todas las bibliotecas dependientes en el momento de la compilación (por lo tanto, el tamaño del ejecutable).

Pero cuando intenté usar el binario compilado en una imagen de scratch de docker con actix, el cliente mysql y diesel con la función mysql habilitada, aparece este error:

 error while loading shared libraries: libmariadb.so.3: cannot open shared object file: No such file or director

Mi archivo acoplable:

 FROM rust:1.43 as builder WORKDIR /var/app RUN apt-get update && apt-get install -y libclang-dev clang libmariadb-dev-compat libmariadb-dev COPY Cargo.toml Cargo.lock diesel.toml ./ COPY src src RUN cargo install diesel_cli --no-default-features --features mysql RUN cp /usr/local/cargo/bin/diesel diesel RUN cargo build --release FROM ubuntu USER 1000 WORKDIR /var/app COPY --from=builder --chown=1000:1000 /var/app/target/release/sniper_api app COPY --from=builder --chown=1000:1000 /var/app/diesel diesel CMD ["./app"]

Mi carga:

 [dependencies] actix-rt = "1.0.0" actix-web = "2.0.0" actix-http = "1.0.1" serde = { version = "1.0.112", features=["derive"] } dotenv = "0.15.0" config = "0.10.1" diesel = { version = "1.4.2", features = ["mysql","r2d2"]} futures = "0.3.5" r2d2 = "0.8.8" r2d2_mysql = "18.0.0" env_logger = "0.7.1"

Pero si uso ubuntu/debian/etc. imagen como tiempo de ejecución e instale libmariadb-dev-compat libmariadb-dev todo está bien. ¿Hay alguna manera de obtener un solo binario verdadero con el conector mysql en Rust?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Pensé que el compilador de óxido usa enlaces estáticos e incluye todas las bibliotecas dependientes en el momento de la compilación (por lo tanto, el tamaño del ejecutable).

Esto solo se aplica a las bibliotecas de Rust. Para otros idiomas, generalmente hay poco que rustc pueda hacer.

En particular, en este caso, diesel brinda compatibilidad con mysql / mariadb a través de la caja mysqlclient-sys para la que actualmente existe un problema y un PR adjunto abierto para admitir enlaces estáticos para esta biblioteca. Pero aún no se han fusionado.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda