【问题标题】:Adding multiple static Rust libraries in an iOS app在 iOS 应用中添加多个静态 Rust 库
【发布时间】:2017-10-04 15:29:04
【问题描述】:

我有两个用 Rust 编写的库(具有 C 兼容接口),我正在尝试将它们集成到 iOS 应用中。

在同一个项目中集成两个 .a 文件时,我收到错误,因为来自 Rust 标准库的符号现在出现多次:

duplicate symbol _rust_eh_personality in:
    /Users/x/Development/ios-client/Y/Rust/lib1_ffi.a(lib1_ffi.0.o)
    /Users/x/Development/ios-client/Y/Rust/lib2_ffi.a(lib2_ffi.0.o)
...

如何解决?可以将 Rust 符号提取到单独的库中吗?或者符号可以命名空间吗?

【问题讨论】:

  • 您可以尝试先将两个依赖项编译到一个仅使用 rust 的 .a 库中,然后将生成的 .a 集成到您的项目中。
  • 当然,这在我的情况下可行,但如果您集成第三方库,这在一般情况下不是一个好的解决方案。

标签: ios rust static-linking


【解决方案1】:

在发布本文时,普遍的理论是,当启用链接时间优化 (LTO) 时会出现此问题,并且是由 rustc 生成的静态库中的错误引起的 (link)

作为一项临时措施,建议在解决此问题之前不要启用 LTO。

【讨论】:

  • 流行理论; 已建议。这真的有效吗?你试过了吗?
  • 我确认这解决了我的问题。就在lto = falseCargo.toml
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-04
相关资源
最近更新 更多