我有两个用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符号可以提取到一个单独的库中吗?或者符号可以命名空间吗?
答案 0 :(得分:0)
在发布时,流行的理论是,当启用链接时优化(LTO)并且由staticc生成(link)的静态库中的错误引起时,会出现此问题。
作为一项临时措施,有人建议在此问题得到解决之前不应启用LTO。