首页 > 解决方案 > 如何使用 openssl 交叉编译 rust 项目?

问题描述

我的项目是用 Rust ( Ubuntu 16.04, CMake 3.5.1) 编写的。

以前它用作grpcio = "0.4.0"依赖Cargo.toml项,我可以成功地交叉编译(即创建一个静态二进制文件)它(使用cross)。但是,在我将依赖项更改为grpcio = { version = "0.4.2", features = ["openssl"] }无法再交叉编译后:它说它无法编译grpcio-sys = "0.4.2"并显示一些 CMake 错误(我无法继续使用0.4.0,因为它不支持features=["openssl"]):

  1. 找不到 OpenSSL 的一些环境标志(即使我安装sudo apt-get install libssl-devUbuntu 16.04.
  2. gRPC_PROTOBUF_PROVIDER is "module" but PROTOBUF_ROOT_DIR is wrong.

我该如何解决?这篇文章说我应该完全避免使用 OpenSSL。这是另一篇关于使用 OpenSSL 进行交叉编译的文章。

标签: rustcross-compilinggrpc

解决方案


在尝试编译到 Turris Omnia 路由器(armv71)时,我正在寻找类似的问题。我找到了一个很棒的 docker 镜像来解决我的问题。

看看:https ://github.com/messense/rust-musl-cross 。


推荐阅读