在 iOS 应用程序中添加多个静态 Rust 库

问题描述 投票:0回答:2

我有两个用 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 符号可以提取到一个单独的库中吗?或者符号可以命名空间吗?

ios rust static-linking
2个回答
1
投票

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

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


0
投票

Rustc 将为每个静态库包含 rust 标准库。因此将 rustc 生成的多个 staticlib 链接在一起会出现符号冲突。

© www.soinside.com 2019 - 2024. All rights reserved.