【问题标题】:rust compile x86 library on x86_64 machinerust 在 x86_64 机器上编译 x86 库
【发布时间】:2019-04-29 00:38:48
【问题描述】:

我有 ubuntu x86_64 容器,cargo build 运行良好。 但我也需要构建 x86 库版本。 据我了解,我需要添加 i686 工具链和目标。

rustup target add i686-unknown-linux-gnu done successful
rustup toolchain install stable-i686-unknown-linux-gnu finished with error
$ rustup toolchain install stable-i686-unknown-linux-gnu
info: syncing channel updates for 'stable-i686-unknown-linux-gnu'
info: latest update on 2018-11-08, rust version 1.30.1 (1433507eb 2018-11-07)
info: downloading component 'rustc'
info: downloading component 'rust-std'
info: downloading component 'cargo'
info: downloading component 'rust-docs'
info: installing component 'rustc'
info: installing component 'rust-std'
info: installing component 'cargo'
info: installing component 'rust-docs'

  stable-i686-unknown-linux-gnu installed - (error reading rustc version)

$ rustup  default stable-i686
info: using existing install for 'stable-i686-unknown-linux-gnu'
info: default toolchain set to 'stable-i686-unknown-linux-gnu'

  stable-i686-unknown-linux-gnu unchanged - (error reading rustc version)

我是否错过了什么或采取了错误的方法?

【问题讨论】:

    标签: rust cross-compiling rust-cargo


    【解决方案1】:

    您必须将目标添加到当前工具链,而不是更改工具链(确保先切换回原始工具链)。

    $ rustup target install i686-unknown-linux-gnu
    $ cargo build --target=i686-unknown-linux-gnu
    

    当然,您还需要在系统上安装 32 位库,例如在 ubuntu 上,您可以通过

    安装它们
    $ sudo apt install gcc-multilib
    

    (有关更多信息,请参阅How to Compile 32-bit Apps on 64-bit Ubuntu?

    【讨论】:

    • 谢谢。这很有帮助。但我陷入了下一步。错误:无法为openssl-sys v0.9.39 运行自定义构建命令我通过安装libssl-dev 解决了x86_64 构建问题但安装libssl-dev:i386 并没有解决交叉编译错误。顺便说一句,它不是我拥有的 Ubuntu。 Debian 拉伸
    • 完整的错误信息会很有帮助(也许值得另一个问题)。
    • 通过将 OPENSSL_DIR 指向正确的位置解决了问题。是的,我应该为此提出一个新问题。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多