использование библиотеки GCC 4.4 с приложением GCC 4.8

Я пишу заявку, и я хотел бы использовать GCC 4.8 на rhel7. Моя проблема в том, что мне нужно использовать стороннюю разделяемую библиотеку, которая была построена с использованием GCC 4.4, созданной на rhel6.

1

Решение

Кто-то предложил мне создать интерфейс между моим приложением
и библиотека, использующая extern «C», чтобы избежать проблем ABI при переходе между c ++ 03
на C ++ 11, и только передать простые структуры C в интерфейсе.

Это значимое предложение, так как слишком сложно сохранить совместимость ABI в интерфейсах C ++.

Но они также предположили, что возможно мне придется скопировать и связать
libstdc ++ и libgcc с компьютера rhel6, начиная со стороннего lib
(и мой интерфейс) построен с использованием тех. Это где я запутался.

И libgcc, и libstdc ++ сохраняют обратную совместимость (если только GCC5 но это не ваш случай) так что сторонняя библиотека должна прекрасно работать с библиотеками RHEL7.

Учитывая, что основная версия (libName.so.major.minor.x.z) libstdc ++
и libgcc одинаково на rhel6 и 7, мне действительно нужно их копировать
с rhel6 до 7?

Нет (см. Выше).

Не могу я построить свой интерфейс на rhel6, и просто скопировать его вместе
с третьей стороной lib на rhel7 (без копирования старого libstdc ++ / libgcc)?

Да, это будет работать.

Я имею в виду, так как вещи построены с использованием старых libstdc ++ / libgcc
должен быть совместим с прямым, нет?

Правильно (обычно говорят, что «новые версии стандартных библиотек обратно совместимы, то есть программное обеспечение, скомпилированное со старыми библиотеками, будет продолжать работать»).

Могу ли я столкнуться с проблемами (ABI)?

Если вам как-то удастся передать объект STL, созданный в одной libstdc ++, в другую, у вас будут странные ошибки. Но если ваша и сторонняя библиотека имеют чистые интерфейсы C, это не должно вызывать проблем (поскольку у объектов STL нет возможности избежать их содержащих библиотек).

Если мне нужно скопировать libstdc ++ и libgcc из rhel6,
и связать новые и старые версии вместе — как мне это сделать?
будет ли работать предложение статически связать новые версии?

Это было бы ненужным бременем.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]