Мы хотели бы использовать стандартную библиотеку C ++ (libstdc ++) в одном из наших .so
.so должен загружаться любой сторонней программой в системе, предоставлять несколько символов и немешать хост-приложению. В прошлом у нас были проблемы со связыванием со стандартной библиотекой C ++ (конфликт символов и проблемы с отладкой). Теперь мы приняли следующие меры:
- статическое связывание libstdc ++ (ldd подтверждает, что мы статически связали)
- , гарантирующее, что только символы нашего API экспортируются через директивы
--retain-symbols-file
, переданные компоновщику(nm -D подтверждает, что нужны только те символы, которые нам нужны) - нет объектов C ++ в нашем API
- нет исключений, используемых
- нет выделения памяти / освобождения от хоста и dealloc/ alloc с нашей стороны
Пока мы просто используем std::vector
, статический глобальный объект std::map
и std::string
.
Выполнена ли какая-либо статическая операция построения? стандартной библиотекой C ++ (особенно меня беспокоит статический глобальный объект std::map
), который может быть выполнен во время загрузки / выгрузки для .so, что может повлиять на загрузку приложения хоста .so?