Запуск библиотеки C++11 с более старой версией libc

Запуск библиотеки C++11 с более старой версией libc

Я написал общую библиотеку с использованием функций C++11, скомпилированную с помощью gcc 4.8, libc 2.18, которую нужно запустить на клиентской машине CentOS 6, на которой установлены gcc 4.4.7, libc 2.12. В этой библиотеке есть некоторые символы, которых нет в libc 2.12, так как же мне использовать эту библиотеку на CentOS 6? У меня есть гибкость в том, как, где и на какой машине можно скомпилировать библиотеку, но в конечном итоге ее можно будет использовать на клиентской CentOS 6, где пакеты нельзя трогать. Можно ли скомпилировать ее с помощью DevTools-2 на CentOS 6 или могут возникнуть какие-либо проблемы, связанные с ABI. Пожалуйста, дайте мне знать, если есть какие-либо другие предложения. Заранее спасибо.

решение1

Компилировать на той же системе, на которой он запущен. Возможно, вам придется перекомпилировать для перехода на другую версию дистрибутива (например, с 7 на 8), а иногда и между ними.

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

решение2


Возможности C++11, скомпилированные с помощью gcc 4.8

? Почему не g++ 4.8 ?

Предложение: Скомпилируйте вашу библиотеку статически с помощью libstdc++.a → Я думаю, что функции C++11 находятся в *libstdc++-devel, а не в glibc.

В комплект devtoolset-2-libstdc++-devel-4.8.2 входят статические библиотеки:

/opt/rh/devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.2/{ libstdc++.a, libstdc++_nonshared.a }


Связанный контент