Это команда abi-compliance-checker, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
abi-compliance-checker - инструмент для сравнения совместимости с ABI разделяемой библиотеки C / C ++
версии
ОПИСАНИЕ
ИМЯ:
ABI Compliance Checker (abi-compliance-checker) Проверка обратной совместимости
API библиотеки C / C ++
ОПИСАНИЕ:
ABI Compliance Checker (ABICC) - это инструмент для проверки обратных двоичных и
совместимость на уровне исходного кода общей библиотеки C / C ++. Инструмент проверяет файлы заголовков
и разделяемые библиотеки (* .so) старых и новых версий и анализирует изменения в API и
ABI (ABI = API + ABI компилятора), который может нарушить совместимость двоичного кода и / или исходного кода:
изменения в стеке вызовов, изменения v-таблицы, удаленные символы, переименованные поля и т. д.
Бинарная несовместимость может привести к сбою или некорректному поведению приложений.
построены со старой версией библиотеки, если они работают на новой. Источник
несовместимость может привести к ошибкам перекомпиляции с новой версией библиотеки.
Инструмент предназначен для разработчиков программных библиотек и сопровождающих
операционные системы, которые заинтересованы в обеспечении обратной совместимости, т. е. позволяют
старые приложения для запуска или перекомпиляции с новыми версиями библиотек.
Также инструмент может использоваться независимыми поставщиками программного обеспечения для проверки переносимости приложений на новые
версии библиотеки. Найденные проблемы можно учесть при адаптации
приложение к новой версии библиотеки.
Этот инструмент является бесплатным программным обеспечением: вы можете распространять и / или изменять его под
условия GNU LGPL или GNU GPL.
ПРИМЕНЕНИЕ:
abi-compliance-checker [параметры]
Пример:
abi-соответствие-чекер -lib ИМЯ -Старый СТАРЫЙ.xml -новый НОВЫЙ.xml
OLD.xml и NEW.xml - это XML-дескрипторы:
1.0
/ path1 / to / header (s) / / path2 / to / header (s) /
...
/ путь1 / к / библиотеке (-ям) / / путь2 / к / библиотеке (-ам) /
...
ИНФОРМАЦИЯ ОПЦИИ:
-h| -help
Распечатайте эту справку.
-i| -инфо
Распечатать полную информацию.
-v| -версия
Информация о версии для печати.
-дампверсия
Распечатайте версию инструмента (1.99.14) и больше ничего не делайте.
ОБЩАЯ ИНФОРМАЦИЯ ОПЦИИ:
-l| -lib | -библиотека ИМЯ
Название библиотеки (без версии).
-d1| -old | -o ПУТЬ
Дескриптор 1-й (старой) версии библиотеки. Это может быть одно из следующих:
1. XML-дескриптор (файл VERSION.xml):
1.0
/ path1 / to / header (s) / / path2 / to / header (s) /
...
/ путь1 / к / библиотеке (-ям) / / путь2 / к / библиотеке (-ам) /
...
...
2. Дамп ABI, созданный -дамп вариант 3. Каталог с заголовками и / или общим
библиотеки 4. Файл с одним заголовком
Если вы используете 2-4 типа дескрипторов, вам следует указать номера версий.
-v1 и -v2 варианты тоже.
Для получения дополнительной информации, пожалуйста, см.:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2| -new | -n ПУТЬ
Дескриптор 2-й (новой) версии библиотеки.
-дамп| -dump-abi ПУТЬ
Создайте дамп библиотеки ABI для входного XML-дескриптора. Вы можете передать его куда угодно
и передать вместо дескриптора. Также его можно использовать для отладки инструмента.
Поддерживаемые версии дампа ABI: 2.0 <= V <= 3.2
ЭКСТРА ОПЦИИ:
-приложение| ПУТЬ приложения
Эта опция позволяет указать приложение, которое следует проверить на наличие
переносимость на новую версию библиотеки.
-статические-библиотеки
Проверяйте статические библиотеки вместо общих. В раздел
XML-дескриптор должен указывать на расположение статических библиотек.
-gcc-путь PATH
Путь к кросс-компилятору GCC для использования вместо обычного (основного) GCC.
-gcc-префикс ПРЕФИКС
Префикс инструментальной цепочки GCC.
-gcc-параметры КЛЮЧ
Дополнительные параметры компилятора.
-sroot DIR
Укажите альтернативный корневой каталог. Инструмент будет искать пути включения в
каталоги DIR / usr / include и DIR / usr / lib.
-v1| -версия1 ЧИСЛО
Укажите 1-ю версию библиотеки вне дескриптора. Этот вариант нужен, если вы
предпочли альтернативный тип дескриптора (см. -d1 опция).
В общем случае вы должны указать это в XML-дескрипторе:
Версия
-v2| -версия2 ЧИСЛО
Укажите вторую версию библиотеки вне дескриптора.
-vnum NUM
Укажите версию библиотеки в созданном дампе ABI. В раздел
входной XML-дескриптор в этом случае будет перезаписан.
-s| -строгий
Относитесь ко всем предупреждениям о совместимости как к проблемам. Добавьте число "Низкая" серьезность
проблемы с возвращаемой стоимостью инструмента.
-заголовки-только
Проверьте файлы заголовков без общих библиотек. Его легко запустить, но он может обеспечить
отчет о совместимости низкого качества с ложными срабатываниями и без обнаружения
добавлены / удалены символы.
В качестве альтернативы вы можете написать слово "нет" в раздел в
XML-дескриптор:
нет
-шоу-ретвал
Показать в отчете тип возвращаемого значения символа.
-символы-список PATH
Эта опция позволяет указать файл со списком символов (искаженные имена в
C ++), который следует проверить. Остальные символы не проверяются.
-типы-список PATH
Эта опция позволяет указать файл со списком типов, которые должны быть
проверил. Остальные типы проверяться не будут.
-skip-символы PATH
Список символов, которые не следует проверять.
-скип-типы PATH
Список типов, которые не следует проверять.
-заголовки-список PATH
Файл со списком заголовков, которые нужно проверить / выгрузить.
-skip-заголовки PATH
Файл со списком файлов заголовков, которые не нужно проверять.
-заголовок ИМЯ
Проверить / сбросить ABI только этого заголовка.
-использовать-свалки
Сделайте дампы для двух версий библиотеки и сравните дампы. Это должно увеличиться
производительность инструмента и уменьшить использование системной памяти.
-ностдинк
Не ищите файлы заголовков в стандартных системных каталогах GCC.
-dump-система ИМЯ -sroot DIR
Найдите все общие библиотеки и файлы заголовков в каталоге DIR, создайте XML
дескрипторов и сделайте дампы ABI для каждой библиотеки. Результирующий набор дампов ABI может быть
в сравнении (--cmp-системы) с другим, созданным для другой версии операционной
система, чтобы проверить их на совместимость. Не забудьте указать
-кросс-gcc вариант, если ваша целевая система требует определенной версии GCC
компилятор (отличный от хоста GCC). Системный дамп ABI будет создан для:
sys_dumps / NAME / ARCH
-dump-система ОПИСАНИЕ.xml
То же, что и предыдущий вариант, но принимает XML-дескриптор целевой системы как
input, где вы должны его описать:
/ * Первичные разделы * /
/ * Название системы * /
/ * Список путей к файлам заголовков и / или
каталоги с заголовочными файлами, по одному на строку * /
/ * Список путей к разделяемым библиотекам и / или
каталоги с разделяемыми библиотеками, по одному в строке * /
/ * Необязательные разделы * /
/ * Список каталогов для поиска
для файлов заголовков для автоматической генерации включаемых путей, по одному на строку * /
/ * Список каталогов для поиска
для разделяемых библиотек для разрешения зависимостей, по одной в строке * /
/ * Список каталогов с используемыми инструментами
для анализа (набор инструментов GCC), по одному в строке * /
/ * Префикс инструментальной цепочки GCC.
Примеры:
arm-linux-gnueabi arm-none-symbianelf * /
/ * Дополнительные параметры GCC, по одной на строку * /
-sysinfo DIR
Эту опцию следует использовать с -dump-система возможность сбросить ABI операционной
систем и настроить процесс сброса. Вы можете найти образец в упаковке:
модули / Цели / {unix, symbian, windows}
-cmp-системы -d1 sys_dumps / NAME1 / ARCH -d2 sys_dumps / NAME2 / ARCH
Сравните два дампа ABI системы. Создавайте отчеты о совместимости для каждой библиотеки и
общий HTML-отчет, включающий сводку результатов тестирования для всех проверенных библиотек.
Отчет будет создан для:
sys_compat_reports / NAME1_to_NAME2 / ARCH
-libs-список PATH
Файл со списком библиотек, которые должны быть выгружены -dump-система вариант
или должны быть проверены -cmp-системы опцию.
-доб.| -расширенный
Если ваша библиотека A должна использоваться другой библиотекой B, и вы хотите контролировать
ABI of B, то вы должны включить эту опцию. Инструмент проверит наличие изменений
во всех типах данных, даже если они не используются какой-либо функцией в библиотеке A. Такие
типы данных не являются частью ABI библиотеки A, но могут быть частью ABI библиотеки B.
библиотека.
Краткая схема:
приложение C (сломано) -> lib B (сломанный ABI) -> lib A (стабильный ABI)
-q| -тихий
Печатать все сообщения в файл вместо stdout и stderr. Путь по умолчанию (может быть
изменено -log-путь вариант):
журналы / run.log
-стандартный вывод
Выводить результаты анализа (отчеты о совместимости и дампы ABI) на стандартный вывод вместо
создание файла. Это позволит передавать данные другим программам.
-формат отчета FMT
Измените формат отчета о совместимости. Форматы:
htm - формат HTML (по умолчанию) xml - формат XML
-dump-формат FMT
Изменить формат дампа ABI. Форматы:
perl - Формат Data :: Dumper (по умолчанию) xml - формат XML
-xml
Псевдоним для: - формат отчета=XML or --dump-формат=XML
-ланг ДЛИННЫЙ
Установите язык библиотеки (C или C ++). Вы можете использовать эту опцию, если инструмент не может
автоматическое определение языка. Эта опция может быть полезна для проверки заголовков C-библиотеки.
(--lang=C) в --заголовки только or --расширенный режимы.
-арх ARCH
Установите архитектуру библиотеки (x86, x86_64, ia64, arm, ppc32, ppc64, s390 и т. Д.). В
опция полезна, если инструмент не может определить правильную архитектуру ввода
объекты.
-двоичный| -bin | -abi
Показывать только проблемы совместимости "Двоичный". Создать отчет для:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-source| -src | -api
Показывать только проблемы совместимости "Исходный код". Создать отчет для:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-предел-затронутый ОГРАНИЧЕНИЯ
Максимальное количество затронутых символов, перечисленных под описанием измененного
введите отчет.
ДРУГИЕ ОПЦИИ:
-test
Выполните внутренние тесты. Создайте две несовместимые двоичные версии библиотеки примеров и
запустите инструмент, чтобы проверить их на совместимость. Эта опция позволяет проверить,
инструмент корректно работает в текущей среде.
-тест-дамп
Проверить умение создавать, читать и сравнивать дампы ABI.
-отлаживать
Режим отладки. Распечатать отладочную информацию на экране. Сохранить промежуточные этапы анализа
в каталоге отладки:
отладка / LIB_NAME / ВЕРСИЯ /
Также рассмотрите возможность использования --свалка возможность отладки инструмента.
-cpp-совместимый
Если ваши файлы заголовков написаны на языке C и могут быть скомпилированы G ++
компилятор (т.е. не используйте ключевые слова C ++), тогда вы можете сообщить инструменту об этом и
ускорить анализ.
-cpp-несовместимо
Установите этот параметр, если входные файлы заголовков C используют ключевые слова C ++.
-p| -params ПУТЬ
Путь к файлу с именами параметров функции. Может использоваться для улучшения отчета
проверьте, не имеют ли файлы заголовков библиотеки имена параметров. Формат файла:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Заменить макрос {RELPATH} на PATH в XML-дескрипторе, используемом для выгрузки библиотеки.
ABI (см. -дамп опция).
-relpath1 PATH
Заменить макрос {RELPATH} на PATH в первом XML-дескрипторе (-d1).
-relpath2 PATH
Заменить макрос {RELPATH} на PATH во втором XML-дескрипторе (-d2).
-dump-путь PATH
Укажите путь к файлу * .abi.tar.gz или * .abi для создания дампа ABI. Дефолт:
abi_dumps / LIB_NAME / LIB_NAME_VERSION.abi.tar.gz
-Сортировать
Включить сортировку данных в дампах ABI.
-report-путь PATH
Путь к отчету о совместимости. Дефолт:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
-bin-путь-отчета PATH
Путь к «двоичному» отчету о совместимости. Дефолт:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-src-report-путь PATH
Путь к отчету о совместимости «Источник». Дефолт:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-log-путь PATH
Путь к журналу для всех сообщений. Дефолт:
журналы / LIB_NAME / ВЕРСИЯ / log.txt
-log1-путь PATH
Путь к журналу для 1-й версии библиотеки. Дефолт:
журналы / LIB_NAME / V1 / log.txt
-log2-путь PATH
Путь к журналу для 2-й версии библиотеки. Дефолт:
журналы / LIB_NAME / V2 / log.txt
-Режим ведения журнала РЕЖИМ
Измените режим ведения журнала. Режимы:
w - перезаписывать старые журналы (по умолчанию) a - добавлять старые журналы n - не записывать никакие журналы
-список затронутых
Сгенерировать файл со списком несовместимых символов рядом с HTML-совместимостью
отчет. Используйте команду 'c ++ filter @file' из GNU binutils, чтобы распутать символы C ++ в
сгенерированный файл. Имена по умолчанию:
abi_affected.txt src_affected.txt
-составная часть ИМЯ
Имя компонента в заголовке и сводке HTML-отчета. Дефолт:
библиотека
-заглавие ИМЯ
Измените имя библиотеки в заголовке отчета на NAME. По умолчанию будет отображаться
имя, указанное -l опцию.
-дополнительная информация DIR
Выгрузить дополнительную информацию в DIR.
-внешний дамп
Создать расширенный дамп ABI, содержащий все символы из единицы перевода.
-сила
Попробуйте использовать эту опцию, если инструмент не работает.
-толерантность УРОВЕНЬ
Примените набор эвристик для успешной компиляции файлов входных заголовков. Вы можете
включить несколько уровней допуска, объединив их в одну цепочку (например, 13, 124,
так далее.). Уровни:
1 - пропускать заголовки, отличные от Linux (например, win32 _ *. H и т. Д.) 2 - пропускать внутренние заголовки (например,
* _p.h, impl / *. h и т. д.) 3 - пропускать заголовки, которые включают заголовки, отличные от Linux 4 - пропускать
заголовки, добавленные другими
терпимый
Включите наивысший уровень допуска [1234].
-чек
Проверить полноту дампа ABI.
-быстро
Быстрый анализ. Отключить проверку некоторых экземпляров шаблона.
-skip-внутренние-символы ШАБЛОН
Не проверяйте символы, совпадающие с шаблоном.
-скип-внутренние-типы ШАБЛОН
Не проверяйте типы, соответствующие шаблону.
ОТЧЕТ:
Отчет о совместимости будет создан для:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
Журнал будет создан для:
журналы / LIB_NAME / V1 / log.txt журналы / LIB_NAME / V2 / log.txt
ВЫХОД КОДЫ:
0 - Совместимо. Инструмент работал без ошибок. ненулевое значение - несовместимо или
инструмент работал с ошибками.
ЕЩЁ ИНФОРМАЦИЯ:
http://lvc.github.io/abi-compliance-checker/
Используйте abi-compliance-checker онлайн с помощью сервисов onworks.net