У меня есть несколько библиотек C ++, которые могут быть собраны как статические, так и совместно используемые, и я хочу создать единую библиотеку-оболочку с общим доступом, которая обеспечивает интерфейс C для всех их функций.Какие шаги необходимы, чтобы правильно сделать это с gcc / g ++?
Сейчас я сначала перекомпилирую объекты библиотек C ++ с -fPIC и -fvisibility = hidden, затем скомпилирую библиотеку-обертку также с -fvisibility = hidden, но с функциями C api, связанными с видимостью по умолчанию, а затем связать все это вместе.Таким образом, символы из C ++ api, кажется, не экспортируются даже слабо и даже при компиляции с -flto.Все это по-прежнему динамически связано с libstdc ++, но, может быть, я смогу с этим смириться (или, может быть, нет?).
Есть ли что-то, что я забываю, или есть что-то, что мне не нужно делать?Например, я не уверен, насколько важно скрывать символы лежащего в основе API C ++, но это, кажется, позволяет такие вещи, как связывание с библиотекой api C и в то же время с какой-то другой версией одной из библиотек C ++,Предполагая, что эти две вещи используются независимо, они будут связываться и выполняться.