rust - 在 Travis CI 上交叉编译简单 crate 时找不到链接器 cc

标签 rust travis-ci cross-compiling cc rust-crates

作为我的一个项目的一部分,我必须在 Linux 上将 Rust crate 从 x86_64 交叉编译到 i686。我目前正在为此使用 Travis CI,使用简单的 Hello World箱子(默认的二进制箱子)。我的相关矩阵条目的 Travis CI 配置是:

# ...

matrix:
  include:
    # ...
    - os: linux
      rust: 1.30.0
      before_script:
        - sudo apt-get update
        - sudo apt-get install -y libc6-dev:i386
      env: TARGET=i686-unknown-linux-gnu
  # ...

script:
  - rustup target install $TARGET
  - cargo build --release --target=$TARGET

不幸的是,当我将此配置推送到 Travis CI 时,我得到一个 build error :

$ cargo build --release --target=$TARGET
   Compiling test-rust-deploy-releases v0.1.0 (/home/travis/build/arnavb/test-rust-deploy-releases)
error: linker `cc` not found
  |
  = note: No such file or directory (os error 2)

error: aborting due to previous error

error: Could not compile `test-rust-deploy-releases`.
To learn more, run the command again with --verbose.
The command "cargo build --release --target=$TARGET" exited with 101.

我该如何解决这个问题?

最佳答案

好吧,在试验和更多谷歌搜索之后,我将我的 apt install 命令更改为:

sudo apt-get install -y gcc-4.8 cpp-4.8 gcc-multilib

(前两个是第三个未满足的依赖项,必须手动安装)。

现在构建正常运行。

关于rust - 在 Travis CI 上交叉编译简单 crate 时找不到链接器 cc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643737/

相关文章:

ffmpeg - 为 Tizen 交叉编译 ffmpeg

rust - actix-web:在中间件中添加数据以请求

python - 如何知道我的 Python 测试是否在覆盖模式下运行?

ruby-on-rails - 为什么 Travis CI 会编辑我的文件?

python - 结合 tox 为 Travis CI 指定确切的 Python 版本

iOS 应用程序编译和 MacInCloud/类似

string - 为什么从标准输入读取用户输入时我的字符串不匹配?

rust - trait with output-type Tuple mismatches other Traits Type, which is the same tuple

websocket - 在同一端口上运行 websocket 和 http 服务器(Rust、hyper)

C++ cmake & boost & arm 交叉编译