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

时间:2017-10-04 15:29:05

标签: ios rust static-linking

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

1 个答案:

答案 0 :(得分:0)

在发布时,流行的理论是,当启用链接时优化(LTO)并且由staticc生成(link)的静态库中的错误引起时,会出现此问题。

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