Вкратце: когда я нарушаю ABI при работе с большими библиотеками C/C++, которые имеют потребителей и ожидают стабильности во всех независимых версиях?Устойчивость ABI: Когда я нарушаю ABI?
ответ
Нет, существует разница между API и несовместимостью ABI. Несовместимость API относится к устареванию/удалению функции, поскольку вы сказали, что пользователи больше не могут использовать ее в новой библиотеке. Это заставит старый код не компилироваться.
С другой стороны, несовместимость ABI включает ошибки нестабильности/связывания, например, если библиотека была скомпилирована в системе System V versus ARM или скомпилирована с помощью libstdC++ или libC++. Это требует, чтобы вся библиотека была перекомпилирована для целевой системы.
Не совместимость API - это подмножество несовместимости ABI? Представьте, что пользователи не использовали общедоступную функцию, поэтому теоретически код должен компилироваться, я полагаю. В любом случае ответа было бы достаточно для меня. – eljefedelrodeodeljefe
@eljefedelrodeodeljefe _ «Не совместимость API - это подмножество несовместимости ABI?» _ Они являются ортогональными вещами. –
@eljefedelrodeodeljefe, если у вас есть общедоступная функция, вы не можете гарантировать, что пользователи ее не использовали (если вы полностью не контролируете своих пользователей, и в этом случае зачем заботиться об ABI, когда вы могли просто заставить своих контролируемых пользователей повторно компилировать свой код). Некоторые изменения API (например, удаление публичной функции) нарушают ABI. Некоторые изменения API не обязательно. – user2079303
- 1. является Xen ABI истинной ABI?
- 2. Создание общих libc.so для System V ABI в GNU ABI
- 3. Строка ABI не работает
- 4. Список совместимости G ++ ABI
- 5. Исключить abi из apk
- 6. target specific glibc ABI
- 7. std :: errc ABI портативность
- 8. ABI vs C++ Standard
- 9. C# интерфейс поломка, ABI
- 10. Концепция API и ABI
- 11. Android-эмулятор ABI
- 12. GCC 5 ABI change
- 13. Коллекции WinRT WRL ABI
- 14. x86_64 ABI: разборка вопрос
- 15. ABI для Apache модули
- 16. G ++ новые проблемы с ABI
- 17. Android и Затмение ABI типа
- 18. будет статическая компиляция сломать ABI?
- 19. PIN-код неизвестен Ошибка ABI
- 20. Модули C++ и C++ ABI
- 21. C Заголовочные файлы и ABI
- 22. Поддержание ABI: добавление конструктор структуры
- 23. Как получить текущий ABI приложения?
- 24. Включение externalNativeBuild с разделом ABI
- 25. Как связаны компиляция и ABI?
- 26. Ошибка ABI при создании виртуального устройства Android
- 27. Совместимость GCC 4.0, 4.2 и LLVM ABI
- 28. Android Studio ищет библиотеки с неправильным ABI
- 29. Ошибка тестовой ссылки блока усиления - несоответствие abi?
- 30. Что такое ABI (Application Binary Interface)?
Слишком широкое, что означает «используется конфиденциально»? Был ли он членом общедоступного класса? – SergeyA
... можно удалить. Это не важно для вопроса слишком много. То же самое относится и к дополнениям функций. – eljefedelrodeodeljefe
Это субъективный вопрос, каждая ситуация может иметь другой ответ. Если бизнес-потребности слишком велики, чтобы нарушить ABI из-за проблем с обслуживанием, тогда, возможно, сейчас не самое подходящее время для разрыва ABI. Если бизнес нуждается в оправдании, возможно, сейчас самое подходящее время. Это действительно зависит от ситуации –