Добавление нескольких статических библиотек Rust в приложение iOS
У меня есть две библиотеки (с C-совместимым интерфейсом), написанные на Rust, которые я пытаюсь интегрировать в приложение для 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 ответ
На момент написания этой статьи распространенная теория состояла в том, что эта проблема возникает, когда включена оптимизация Link-Time (LTO), и вызвана ошибкой в статических библиотеках, создаваемых rustc (ссылка).
В качестве временной меры было предложено не включать LTO до тех пор, пока эта проблема не будет решена.