Este es el comando abi-compliance-checker que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
abi-compliance-checker: herramienta para comparar la compatibilidad ABI de la biblioteca compartida C / C ++
versiones
DESCRIPCIÓN
NOMBRE:
Verificador de cumplimiento ABI (abi-compliance-checker) Verifique la compatibilidad con versiones anteriores de un
API de biblioteca C / C ++
DESCRIPCIÓN:
Verificador de cumplimiento ABI (ABICC) es una herramienta para verificar binarios hacia atrás y
compatibilidad a nivel de fuente de una biblioteca compartida C / C ++. La herramienta verifica los archivos de encabezado
y bibliotecas compartidas (* .so) de versiones nuevas y antiguas y analiza los cambios en la API y
ABI (ABI = API + compilador ABI) que puede romper la compatibilidad binaria y / o a nivel de fuente:
cambios en la pila de llamadas, cambios en la tabla v, símbolos eliminados, campos renombrados, etc.
La incompatibilidad binaria puede provocar fallas o un comportamiento incorrecto de las aplicaciones
construido con una versión antigua de una biblioteca si se ejecutan en una nueva. Fuente
la incompatibilidad puede resultar en errores de recompilación con una nueva versión de la biblioteca.
La herramienta está destinada a desarrolladores de bibliotecas de software y mantenedores de
sistemas operativos que estén interesados en garantizar la compatibilidad con versiones anteriores, es decir, permitir
aplicaciones antiguas para ejecutar o recompilar con versiones de biblioteca más nuevas.
Además, los ISV pueden utilizar la herramienta para comprobar la portabilidad de las aplicaciones a
versiones de la biblioteca. Los problemas encontrados se pueden tener en cuenta al adaptar el
aplicación a una nueva versión de la biblioteca.
Esta herramienta es software libre: puedes redistribuirla y / o modificarla bajo la
términos de GNU LGPL o GNU GPL.
USO:
abi-compliance-checker [opciones]
Ejemplo:
verificador-de-cumplimiento -lib NOMBRE -antiguo VIEJO.xml -nuevo NUEVO.xml
OLD.xml y NEW.xml son descriptores XML:
1.0
/ ruta1 / a / encabezado (s) / / ruta2 / a / encabezado (s) /
...
/ ruta1 / a / biblioteca (s) / / ruta2 / a / biblioteca (s) /
...
INFORMACIÓN: OPCIONES:
-h| -ayuda
Imprime esta ayuda.
-i| -info
Imprime la información completa.
-v| -versión
Imprime la información de la versión.
-Dumpversion
Imprima la versión de la herramienta (1.99.14) y no haga nada más.
GENERAL OPCIONES:
-l| -lib | -library NAME
Nombre de la biblioteca (sin versión).
-d1| -old | -o RUTA
Descriptor de la 1ª versión (antigua) de la biblioteca. Puede ser uno de los siguientes:
1. Descriptor XML (archivo VERSION.xml):
1.0
/ ruta1 / a / encabezado (s) / / ruta2 / a / encabezado (s) /
...
/ ruta1 / a / biblioteca (s) / / ruta2 / a / biblioteca (s) /
...
...
2. Volcado de ABI generado por -tugurio opción 3. Directorio con encabezados y / o compartido
bibliotecas 4. Archivo de encabezado único
Si utiliza de 2 a 4 tipos de descriptores, debe especificar los números de versión.
con -v1 y -v2 opciones también.
Para obtener más información, consulte:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2| -nuevo | -n RUTA
Descriptor de la 2da (nueva) versión de la biblioteca.
-tugurio| -dump-abi RUTA
Cree un volcado ABI de biblioteca para el descriptor XML de entrada. Puedes transferirlo a cualquier lugar
y pase en lugar del descriptor. También se puede utilizar para depurar la herramienta.
Versiones compatibles de volcado ABI: 2.0 <= V <= 3.2
EXTRA OPCIONES:
-app| -ruta de aplicación
Esta opción permite especificar la aplicación que se debe verificar.
portabilidad a la nueva versión de la biblioteca.
-estatic-libs
Verifique las bibliotecas estáticas en lugar de las compartidas. los sección de la
El descriptor XML debe apuntar a la ubicación de las bibliotecas estáticas.
-gcc-ruta TRAYECTORIA
Ruta al compilador GCC cruzado para usar en lugar del GCC habitual (host).
-prefijo-gcc PREFIJO
Prefijo de cadena de herramientas de GCC.
-gcc-opciones OPCIONES
Opciones adicionales del compilador.
-sysroot DIR
Especifique el directorio raíz alternativo. La herramienta buscará rutas de inclusión en
los directorios DIR / usr / include y DIR / usr / lib.
-v1| -versión1 NUM
Especifique la primera versión de la biblioteca fuera del descriptor. Esta opción es necesaria si
han preferido un tipo de descriptor alternativo (ver -d1 opción).
En el caso general, debe especificarlo en el descriptor XML:
VERSION
-v2| -versión2 NUM
Especifique la segunda versión de la biblioteca fuera del descriptor.
-vnum NUM
Especifique la versión de la biblioteca en el volcado ABI generado. los sección de la
En este caso, se sobrescribirá el descriptor XML de entrada.
-s| -estricto
Trate todas las advertencias de compatibilidad como problemas. Agregue una serie de gravedad "Baja"
problemas con el valor de retorno de la herramienta.
-solo-encabezados
Verifique los archivos de encabezado sin bibliotecas compartidas. Es fácil de ejecutar, pero puede proporcionar una
Informe de compatibilidad de baja calidad con falsos positivos y sin detección de
símbolos agregados / eliminados.
Alternativamente, puede escribir la palabra "ninguna" en el sección en el
Descriptor XML:
ninguna
-mostrar-retval
Muestra el tipo de retorno del símbolo en el informe.
-lista-de-símbolos TRAYECTORIA
Esta opción permite especificar un archivo con una lista de símbolos (nombres alterados en
C ++) que debe comprobarse. No se comprobarán otros símbolos.
-lista-de-tipos TRAYECTORIA
Esta opción le permite a uno especificar un archivo con una lista de tipos que deben ser
comprobado. No se comprobarán otros tipos.
-simbolos-de-salto TRAYECTORIA
La lista de símbolos que no se deben verificar.
-tipos de saltos TRAYECTORIA
La lista de tipos que no deben comprobarse.
-lista-de-encabezados TRAYECTORIA
El archivo con una lista de encabezados, que se debe verificar / volcar.
-saltar-encabezados TRAYECTORIA
El archivo con la lista de archivos de encabezado, que no se debe verificar.
-encabezamiento NOMBRE
Verificar / volcar ABI de este encabezado solamente.
-utilizar-vertederos
Realice volcados para dos versiones de una biblioteca y compare los volcados. Esto debería aumentar
el rendimiento de la herramienta y disminuir el uso de la memoria del sistema.
-nostdinc
No busque archivos de encabezado en los directorios del sistema estándar de GCC.
-sistema-de-vaciado NOMBRE -sysroot DIR
Encuentre todas las bibliotecas compartidas y archivos de encabezado en el directorio DIR, cree XML
descriptores y realizar volcados ABI para cada biblioteca. El conjunto de resultados de volcados ABI puede ser
comparado--cmp-sistemas) con el otro creado para otra versión de funcionamiento
sistema para comprobar su compatibilidad. No olvide especificar
-cruzado-gcc opción si su sistema de destino requiere alguna versión específica de GCC
compilador (diferente del host GCC). El volcado de ABI del sistema se generará para:
sys_dumps / NAME / ARCH
-sistema-de-vaciado DESCRIPTOR.xml
Igual que la opción anterior, pero toma un descriptor XML del sistema de destino como
input, donde debe describirlo:
/ * Secciones primarias * /
/ * Nombre del sistema * /
/ * La lista de rutas a los archivos de encabezado y / o
directorios con archivos de encabezado, uno por línea * /
/ * La lista de rutas a bibliotecas compartidas y / o
directorios con bibliotecas compartidas, uno por línea * /
/ * Secciones opcionales * /
/ * Lista de directorios a buscar
para que los archivos de encabezado generen automáticamente rutas de inclusión, una por línea * /
/ * Lista de directorios a buscar
para que las bibliotecas compartidas resuelvan dependencias, una por línea * /
/ * Lista de directorios con herramientas utilizadas
para análisis (cadena de herramientas GCC), uno por línea * /
/ * Prefijo de cadena de herramientas de GCC.
Ejemplos:
arm-linux-gnueabi arm-none-symbianelf * /
/ * Opciones adicionales de GCC, una por línea * /
-info del sistema DIR
Esta opción debe usarse con -sistema-de-vaciado opción de volcar ABI de funcionamiento
sistemas y configurar el proceso de descarga. Puede encontrar una muestra en el paquete:
módulos / Targets / {unix, symbian, windows}
-cmp-sistemas -d1 sys_dumps / NAME1 / ARCH -d2 sys_dumps / NAME2 / ARCH
Compare dos volcados de ABI del sistema. Cree informes de compatibilidad para cada biblioteca y el
informe HTML común que incluye el resumen de los resultados de las pruebas para todas las bibliotecas comprobadas.
El informe se generará para:
sys_compat_reports / NAME1_to_NAME2 / ARCH
-lib-lista TRAYECTORIA
El archivo con una lista de bibliotecas, que debe ser descargado por el -sistema-de-vaciado opción
o debe ser revisado por el -cmp-sistemas .
-ext| -extendido
Si se supone que su biblioteca A debe ser utilizada por otra biblioteca B y desea controlar
el ABI de B, entonces debe habilitar esta opción. La herramienta buscará cambios
en todos los tipos de datos, incluso si no son utilizados por ninguna función en la biblioteca A. Tal
Los tipos de datos no forman parte de la ABI de la biblioteca A, pero pueden ser parte de la ABI de la B
biblioteca.
El esquema corto es:
aplicación C (rota) -> lib B (ABI rota) -> lib A (ABI estable)
-q| -quiet
Imprime todos los mensajes en el archivo en lugar de stdout y stderr. Ruta predeterminada (puede ser
cambiado por -log-ruta opción):
logs / run.log
-salida estándar
Imprima los resultados del análisis (informes de compatibilidad y volcados de ABI) en la salida estándar en lugar de
creando un archivo. Esto permitiría canalizar datos a otros programas.
-formato de informe FMT
Cambiar formato de informe de compatibilidad. Formatos:
htm - formato HTML (predeterminado) xml - formato XML
-formato de volcado FMT
Cambiar formato de volcado ABI. Formatos:
perl - Datos :: Formato Dumper (predeterminado) xml - Formato XML
-xml
Alias para: --formato de informe=xml or --formato de volcado=xml
-largo IDIOMA
Establecer el idioma de la biblioteca (C o C ++). Puede utilizar esta opción si la herramienta no puede
detectar automáticamente un idioma. Esta opción puede resultar útil para comprobar los encabezados de la biblioteca C
(--idioma=C) en - solo encabezados or --extendido Modos.
-arco ARCH
Configure la arquitectura de la biblioteca (x86, x86_64, ia64, arm, ppc32, ppc64, s390, ect.). los
La opción es útil si la herramienta no puede detectar la arquitectura correcta de la entrada.
objetos.
-binario| -bin | -abi
Muestra solo los problemas de compatibilidad "binarios". Generar informe para:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-Fuente| -src | -api
Mostrar solo los problemas de compatibilidad de "Fuente". Generar informe para:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-limit-afectado LIMITE LAS
El número máximo de símbolos afectados enumerados bajo la descripción del cambio
escriba el informe.
OTROS OPCIONES:
-prueba
Ejecute pruebas internas. Cree dos versiones binarias incompatibles de una biblioteca de muestra y
ejecute la herramienta para comprobar su compatibilidad. Esta opción permite comprobar si
la herramienta funciona correctamente en el entorno actual.
-volcado de prueba
Pruebe la capacidad para crear, leer y comparar volcados ABI.
-depurar
Modo de depuración. Imprime la información de depuración en la pantalla. Guardar etapas de análisis intermedias
en el directorio de depuración:
debug / LIB_NAME / VERSION /
También considere usar --vertedero opción para depurar la herramienta.
-compatible con cpp
Si sus archivos de encabezado están escritos en lenguaje C y pueden ser compilados por G ++
compilador (es decir, no use palabras clave de C ++), entonces puede informar a la herramienta sobre esto y
acelerar el análisis.
-cpp-incompatible
Establezca esta opción si los archivos de encabezado C de entrada utilizan palabras clave C ++.
-p| -params PATH
Ruta al archivo con los nombres de los parámetros de la función. Se puede utilizar para mejorar el informe.
ver si los archivos de encabezado de la biblioteca no tienen nombres de parámetros. Formato de archivo:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relajarse TRAYECTORIA
Reemplaza las macros {RELPATH} por PATH en el descriptor XML usado para volcar la biblioteca
ABI (ver -tugurio opción).
-relpath1 TRAYECTORIA
Reemplace las macros {RELPATH} por PATH en el primer descriptor XML (-d1).
-relpath2 TRAYECTORIA
Reemplace las macros {RELPATH} por PATH en el segundo descriptor XML (-d2).
-ruta-de-descarga TRAYECTORIA
Especifique una ruta de archivo * .abi.tar.gz o * .abi donde generar un volcado ABI. Defecto:
abi_dumps / LIB_NAME / LIB_NAME_VERSION.abi.tar.gz
-clasificar
Habilite la clasificación de datos en volcados ABI.
-informe-ruta TRAYECTORIA
Ruta al informe de compatibilidad. Defecto:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
-ruta-informe-bin TRAYECTORIA
Ruta al informe de compatibilidad "Binario". Defecto:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-ruta-informe-src TRAYECTORIA
Ruta al informe de compatibilidad "Fuente". Defecto:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-log-ruta TRAYECTORIA
Ruta de registro para todos los mensajes. Defecto:
logs / LIB_NAME / VERSION / log.txt
-log1-ruta TRAYECTORIA
Ruta de registro para la primera versión de una biblioteca. Defecto:
logs / LIB_NAME / V1 / log.txt
-log2-ruta TRAYECTORIA
Ruta de registro para la segunda versión de una biblioteca. Defecto:
logs / LIB_NAME / V2 / log.txt
-modo de registro MODO
Cambiar el modo de registro. Modos:
w - sobrescribir registros antiguos (predeterminado) a - agregar registros antiguos n - no escribir registros
-lista-afectada
Genere un archivo con la lista de símbolos incompatibles al lado de la compatibilidad HTML
reporte. Use el comando 'c ++ filt @file' de GNU binutils para deshacer los símbolos de C ++ en
el archivo generado. Nombres predeterminados:
abi_afectado.txt src_afectado.txt
-componente NOMBRE
El nombre del componente en el título y el resumen del informe HTML. Defecto:
bibliotecas
-título NOMBRE
Cambie el nombre de la biblioteca en el título del informe a NAME. Por defecto se mostrará un
nombre especificado por -l .
-Información extra DIR
Volcar información adicional a DIR.
-basura adicional
Cree un volcado ABI extendido que contenga todos los símbolos de la unidad de traducción.
-fuerza
Intente utilizar esta opción si la herramienta no funciona.
-tolerancia NIVEL
Aplique un conjunto de heurísticas para compilar correctamente archivos de encabezado de entrada. Usted puede
habilitar varios niveles de tolerancia uniéndolos en una sola cadena (por ejemplo, 13, 124,
etc.). Niveles:
1 - omita los encabezados que no sean de Linux (p. Ej., Win32 _ *. H, etc.) 2 - omita los encabezados internos (p. Ej.
* _p.h, impl / *. h, etc.) 3 - omitir encabezados que incluyen encabezados que no son de Linux 4 - omitir
encabezados incluidos por otros
-tolerante
Habilite el nivel de tolerancia más alto [1234].
-cheque
Verifique que el volcado ABI esté completo.
-rápido
Análisis rápido. Deshabilite la verificación de algunas instancias de plantilla.
-saltar-símbolos-internos PATRÓN
No compruebe los símbolos que coincidan con el patrón.
-saltar-tipos-internos PATRÓN
No marque los tipos que coincidan con el patrón.
REPORTE:
Se generará un informe de compatibilidad para:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
El registro se generará para:
logs / LIB_NAME / V1 / log.txt logs / LIB_NAME / V2 / log.txt
SALIR CODIGOS:
0 - Compatible. La herramienta se ha ejecutado sin errores. distinto de cero: incompatible o
la herramienta se ha ejecutado con errores.
MÁS INFORMACIÓN:
http://lvc.github.io/abi-compliance-checker/
Use abi-compliance-checker en línea usando los servicios de onworks.net