Я столкнулся с Bug 58800 в libstdc++
, что приводит к тому, что некоторые из моих кодов являются segfault. У меня есть обходной путь, но я не хочу использовать его, когда доступна фиксированная версия libstdc++
. Каков правильный способ проверить версию libstdc++
(через ifdef
)? И, в идеале, на какие версии влияет эта ошибка?Определите версию libstdC++
ответ
libstdC++ поставляется с GCC, так что правильный путь, чтобы проверить версию GCC, с помощью тестирования его __GNUC__
, __GNUC_MINOR__
и __GNUC_PATCHLEVEL__
predefined macros.
Если вы используете libstdC++ с Clang, вы можете проверить, был ли __GLIBCXX__ > 20131020UL
, который является датой исправления ошибки. Релиз после этой даты должен содержать исправление.
Вы можете использовать макрос __GLIBCXX__
, чтобы проверить информацию о версии для libstdc++
. (Существует список значений в разделе 7 раздела ABI Policy Appendix.)
Ошибка заканчивается списком версий, которые были исправлены, но выяснение того, когда была введена ошибка, может быть сложнее. Если вы использовали autoconf
, я бы предложил написать тест, который разбился, если ошибка присутствовала.
- 1. Как проверить версию libstdC++
- 2. Определите, какую версию OpenCV
- 3. Определите версию сайта ASP.NET
- 4. Как определить версию libstdC++ в Clang?
- 5. Определите подходящую версию для cmake_minimum_required()
- 6. Определите упакованную версию структуры C
- 7. Определите версию моего приложения Silverlight
- 8. Определите версию Bluetooth для определенного сеанса
- 9. Определите версию платформы Eclipse в IBM RAD
- 10. Определите версию python в Easy Install
- 11. Определите версию Symfony по папкам. Как?
- 12. Определите небольшую версию библиотеки в Linux
- 13. Как проверить версию libstdC++, а не GCC, во время компиляции?
- 14. Строительство Clang, libstdC++ 4.6 для libstdC++ 4.7
- 15. CMake `link_directories` для libstdC++. Так
- 16. Определите ссылку .net, чтобы всегда использовать последнюю версию dll GAC'd?
- 17. Определите версию firefox, доступную для обновления, используя Python
- 18. Определите версию sass для установки при установке компаса
- 19. Определите, распознает ли IIS/ASP.NET версию браузера IE 11
- 20. Определите минимальную версию OSX. Бинарный файл был скомпилирован для
- 21. Определите версию Office в VSTO 4 до этого. Назначение установлено
- 22. Определите минимальную версию R для всех зависимостей пакетов
- 23. компилировать libstdC++ против musl
- 24. Получение libstdC++ - v3/python
- 25. libstdC++ init с mingw
- 26. libstdC++ - 6.dll issues
- 27. Избегайте ссылок на libstdC++
- 28. Отладка через libstdC++
- 29. является библиотекой libstdC++ reentrant?
- 30. Как определяются зависимости libstdC++?
Я видел список в приложении ABI Policy, но он не подходит достаточно далеко. Проблема исправлена в 4.8.3, но список останавливается на 4.8.0. Тест - отличная идея, мне нужно исследовать ее лучше. – foxcub
@foxcub: если у вас есть 4.8.3, вы можете просто посмотреть, на что установлен макрос, нет? Это ничего не изменит раньше. – rici
У меня нет 4.8.3, что является проблемой. Но все в порядке, я просто подожду и посмотрю. – foxcub