c ++ 11 — (Как) Могу ли я использовать новый C ++ 11 ABI с devtoolset-7 на Centos / RHEL?

Моя цель — использовать gcc 7.2 (и clang 6) в Centos 7 для создания исполняемых файлов, совместимых с целями Centos 7, без установленного devtoolset, но * с использованием более нового C ++ ABI *.

Более новый ABI исправил пару недостатков в lib, которые не могли быть исправлены без изменения ABI. Например, список: размер O (1) против O (n), нет COW для строк.

Я размышлял над ответом о том, почему это не возможно в следующем вопросе.
-D_GLIBCXX_USE_CXX11_ABI = 1 неэффективно для devtoolset-7 в CentOS 7

6

Решение

Это похоже на дубликат вопроса, с которым вы связаны, я не вижу причин держать оба вопроса открытыми.

Могу ли я использовать новый C ++ 11 ABI с devtoolset-7 для Centos / RHEL?

cxx11 ABI влияет на ряд внутренних факторов libstdc++.so (в частности, языковые аспекты), которые не могут поддерживаться моделью смешанных связей devtoolset. Соответствующие функции, которые инициализируют локали, уже присутствуют в системе libstdc++.so и не может быть заменен Devtoolset’s libstdc++_nonshared.a, Из-за этого (и во избежание других потенциальных несоответствий ABI, которые мы не хотим влиять на пользователей RHEL / CentOS) мы отключаем новый ABI в devtoolset (как правильно указано в ответ на другой вопрос).

Если вам действительно нужно новое cxx11 ABI вам нужно будет создать свой собственный GCC 7, который использует обычные динамические ссылки на свои собственные libstdc++.so (а не модель смешанной компоновки, используемая devtoolset), а затем убедитесь, что новый libstdc ++. так используется во время выполнения (см. Поиск динамических или общих библиотек в руководстве).

2

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

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

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