【问题标题】:Rust cargo dylib clarificationRust 货物 dylib 澄清
【发布时间】:2017-10-25 11:05:46
【问题描述】:

我有一个 Rust 项目,我想将它作为 dylib 嵌入到另一个应用程序中。我在Cargo.toml 中设置了crate_type = ["dylib"],但我不确定这是否应该改为cdylib

当我构建项目时,它会按预期在target/debug 中生成libfoo.dylib,但查看otool -L 它还会链接到target/debug/deps/ 中的libfoo.dylib。如果我要在另一个应用程序中使用它,我是否必须提供两个 dylib?

此外,当 crate 类型为 cdylib 时,它也会生成两个 dylib,但 deps 中的一个将在文件名的末尾添加一个哈希。我不确定这两种箱子类型有什么区别。

我可以通过只使用 rustc 来避免获得两个 dylib,但是我想使用 cargo。将 Rust 作为 dylib 嵌入其他应用程序的推荐方法是什么?

如果这很重要的话,我会在 macOS 10.12 上使用 Rust

【问题讨论】:

    标签: macos rust embed dylib rust-cargo


    【解决方案1】:

    经过一番研究,事实证明cdylib 静态链接 Rust 依赖项,dylib 用于与其他 Rust 项目的动态链接。

    至于嵌入,我发现的一切都表明静态链接 Rust 库是推荐的方式。为了动态使用 Rust 库,在我的 [profile] 部分设置 rpath = true 解决了冗余 dylib 的问题。

    【讨论】:

    • 您在研究中使用什么来源发现了这一点?
    • @jv-dev 已经有一段时间了,所以我认为 exact 文档已经改变,但是这里有两个不同的链接讨论 Rust 中的链接:doc.rust-lang.org/rustc/…@987654322 @
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 2013-09-28
    • 1970-01-01
    • 2019-11-15
    • 2013-06-05
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多