Стандартная библиотека C ++ в .so - статические проблемы инициализации - PullRequest
0 голосов
/ 25 октября 2019

Мы хотели бы использовать стандартную библиотеку 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...