У меня есть приложение, которое статически связывается с версией X библиотеки libfoo от стороннего поставщика VENDOR1. Он также связывается с динамической (общей) библиотекой libbar от другого поставщика третьей стороны VENDOR2, который статически связывает версию Y libfoo с VENDOR1.
Итак, libbar.so содержит версию Y libfoo.a, а мой исполняемый файл содержит версию X libfoo.a libbar использует только libfoo внутри, и нет никаких объектов libfoo, переданных из моего приложения в libbar.
Во время сборки ошибок нет, но во время выполнения приложения seg faults. Причина, по-видимому, заключается в том, что в версии X используются структуры, размер которых отличается от версии Y, и компоновщик времени исполнения, кажется, смешивается, и к ним привыкнуть.
Оба VENDOR1 и VENDOR2 являются закрытыми, поэтому я не могу их перестроить.
Есть ли способ создать/связать мое приложение так, чтобы он всегда разрешал версию X и libbar всегда разрешал версию Y, а два никогда не смешивались?