Este é o comando abi-compliance-checker que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online Windows ou emulador online MAC OS
PROGRAMA:
NOME
abi-compliance-checker - ferramenta para comparar a compatibilidade ABI da biblioteca C / C ++ compartilhada
versões
DESCRIÇÃO
NOME:
ABI Compliance Checker (abi-compliance-checker) Verifique a compatibilidade com versões anteriores de um
API da biblioteca C / C ++
DESCRIÇÃO:
ABI Compliance Checker (ABICC) é uma ferramenta para verificar o binário retroativo e
compatibilidade de nível de origem de uma biblioteca C / C ++ compartilhada. A ferramenta verifica os arquivos de cabeçalho
e bibliotecas compartilhadas (* .so) de versões novas e antigas e analisa as mudanças na API e
ABI (ABI = API + ABI do compilador) que pode quebrar a compatibilidade binária e / ou de nível de origem:
mudanças na pilha de chamadas, mudanças na tabela v, símbolos removidos, campos renomeados, etc.
A incompatibilidade binária pode resultar em travamento ou comportamento incorreto dos aplicativos
construído com uma versão antiga de uma biblioteca, caso seja executado em uma nova. Fonte
a incompatibilidade pode resultar em erros de recompilação com uma nova versão da biblioteca.
A ferramenta é destinada a desenvolvedores de bibliotecas de software e mantenedores de
sistemas operacionais que estão interessados em garantir a compatibilidade com versões anteriores, ou seja, permitir
aplicativos antigos para serem executados ou recompilados com versões de biblioteca mais recentes.
Além disso, a ferramenta pode ser usada por ISVs para verificar a portabilidade de aplicativos para novos
versões da biblioteca. Os problemas encontrados podem ser levados em consideração ao adaptar o
aplicativo para uma nova versão da biblioteca.
Esta ferramenta é um software livre: você pode redistribuí-lo e / ou modificá-lo sob o
termos da GNU LGPL ou GNU GPL.
USO:
abi-compliance-checker [opções]
EXEMPLO:
verificador de conformidade abi -lib NOME -velho ANTIGO.xml -novo NOVO.xml
OLD.xml e NEW.xml são descritores XML:
1.0
/ caminho1 / para / cabeçalho (s) / / caminho2 / para / cabeçalho (s) /
...
/ path1 / to / library (s) / / path2 / to / library (s) /
...
INFORMAÇÃO OPÇÕES:
-h| -ajuda
Imprima esta ajuda.
-i| -info
Imprima informações completas.
-v| -version
Imprima informações sobre a versão.
-versão de despejo
Imprima a versão da ferramenta (1.99.14) e não faça mais nada.
SUPORTE OPÇÕES:
-l| -lib | -library NAME
Nome da biblioteca (sem versão).
-d1| -old | -o PATH
Descritor da 1ª (antiga) versão da biblioteca. Pode ser um dos seguintes:
1. Descritor XML (arquivo VERSION.xml):
1.0
/ caminho1 / para / cabeçalho (s) / / caminho2 / para / cabeçalho (s) /
...
/ path1 / to / library (s) / / path2 / to / library (s) /
...
...
2. Despejo de ABI gerado por -jogar fora opção 3. Diretório com cabeçalhos e / ou compartilhado
bibliotecas 4. Arquivo de cabeçalho único
Se você estiver usando um tipo de descritor de 2 a 4, você deve especificar os números de versão
com -v1 e -v2 opções também.
Para mais informações, consulte:
http://ispras.linuxbase.org/index.php/Library_Descriptor
-d2| -new | -n PATH
Descritor da 2ª (nova) versão da biblioteca.
-jogar fora| -dump-abi PATH
Crie dump ABI da biblioteca para o descritor XML de entrada. Você pode transferi-lo para qualquer lugar
e passe em vez do descritor. Também pode ser usado para depurar a ferramenta.
Versões compatíveis de despejo de ABI: 2.0 <= V <= 3.2
EXTRA OPÇÕES:
app| -application PATH
Esta opção permite especificar o aplicativo que deve ser verificado para
portabilidade para a nova versão da biblioteca.
-static-libs
Verifique as bibliotecas estáticas em vez das compartilhadas. o seção do
O descritor XML deve apontar para o local das bibliotecas estáticas.
-gcc-caminho PATH
Caminho para o compilador GCC cruzado a ser usado em vez do GCC usual (host).
-gcc-prefixo PREFIXO
Prefixo do conjunto de ferramentas GCC.
-gcc-opções OPÇÕES
Opções adicionais do compilador.
-sysroot DIR
Especifique o diretório raiz alternativo. A ferramenta irá procurar incluir caminhos em
os diretórios DIR / usr / include e DIR / usr / lib.
-v1| -version1 NUM
Especifique a primeira versão da biblioteca fora do descritor. Esta opção é necessária se você
preferiram um tipo de descritor alternativo (ver -d1 opção).
No caso geral, você deve especificá-lo no descritor XML:
VERSÃO
-v2| -version2 NUM
Especifique a 2ª versão da biblioteca fora do descritor.
-vnum NUM
Especifique a versão da biblioteca no dump ABI gerado. o seção do
O descritor XML de entrada será substituído neste caso.
-s| -strict
Trate todos os avisos de compatibilidade como problemas. Adicione um número de gravidade "Baixa"
problemas para o valor de retorno da ferramenta.
-cabeçalhos apenas
Verifique os arquivos de cabeçalho sem bibliotecas compartilhadas. É fácil de executar, mas pode fornecer um
relatório de compatibilidade de baixa qualidade com falsos positivos e sem detecção de
símbolos adicionados / removidos.
Alternativamente, você pode escrever uma palavra "nenhuma" para o seção no
Descritor XML:
Nenhum
-mostrar-retval
Mostra o tipo de retorno do símbolo no relatório.
-lista de símbolos PATH
Esta opção permite especificar um arquivo com uma lista de símbolos (nomes mutilados em
C ++) que deve ser verificado. Outros símbolos não serão verificados.
-tipos-lista PATH
Esta opção permite especificar um arquivo com uma lista de tipos que devem ser
verificado. Outros tipos não serão verificados.
-skip-símbolos PATH
A lista de símbolos que não devem ser verificados.
-tipos de salto PATH
A lista de tipos que não devem ser verificados.
-lista de cabeçalhos PATH
O arquivo com uma lista de cabeçalhos, que devem ser verificados / despejados.
-skip-cabeçalhos PATH
O arquivo com a lista de arquivos de cabeçalho, que não devem ser verificados.
-cabeçalho NOME
Verifique / Dump ABI deste cabeçalho apenas.
-use-dumps
Faça dumps para duas versões de uma biblioteca e compare os dumps. Isso deve aumentar
o desempenho da ferramenta e diminuir o uso de memória do sistema.
-nostdinc
Não pesquise nos diretórios do sistema padrão do GCC por arquivos de cabeçalho.
-sistema de despejo NOME -sysroot DIR
Encontre todas as bibliotecas compartilhadas e arquivos de cabeçalho no diretório DIR, crie XML
descritores e fazer dumps ABI para cada biblioteca. O conjunto de resultados de despejos ABI pode ser
comparado (--cmp-sistemas) com o outro criado para outra versão de funcionamento
sistema para verificar sua compatibilidade. Não se esqueça de especificar
-cruz-gcc opção se o seu sistema de destino requer alguma versão específica do GCC
compilador (diferente do host GCC). O dump de ABI do sistema será gerado para:
sys_dumps / NAME / ARCH
-sistema de despejo DESCRITOR.xml
O mesmo que a opção anterior, mas leva um descritor XML do sistema de destino como
entrada, onde você deve descrevê-la:
/ * Seções primárias * /
/ * Nome do sistema * /
/ * A lista de caminhos para arquivos de cabeçalho e / ou
diretórios com arquivos de cabeçalho, um por linha * /
/ * A lista de caminhos para bibliotecas compartilhadas e / ou
diretórios com bibliotecas compartilhadas, um por linha * /
/ * Seções opcionais * /
/ * Lista de diretórios a serem pesquisados
para que os arquivos de cabeçalho gerem automaticamente caminhos de inclusão, um por linha * /
/ * Lista de diretórios a serem pesquisados
para bibliotecas compartilhadas para resolver dependências, uma por linha * /
/ * Lista de diretórios com ferramentas usadas
para análise (conjunto de ferramentas GCC), um por linha * /
/ * Prefixo do conjunto de ferramentas GCC.
Exemplos:
arm-linux-gnueabi arm-none-symbianelf * /
/ * Opções adicionais do GCC, uma por linha * /
-sysinfo DIR
Esta opção deve ser usada com -sistema de despejo opção de descartar ABI de operação
sistemas e configurar o processo de despejo. Você pode encontrar uma amostra na embalagem:
módulos / alvos / {unix, symbian, windows}
-sistemas cmp -d1 sys_dumps / NAME1 / ARCH -d2 sys_dumps / NAME2 / ARCH
Compare dois despejos de ABI do sistema. Crie relatórios de compatibilidade para cada biblioteca e o
relatório HTML comum, incluindo o resumo dos resultados do teste para todas as bibliotecas verificadas.
O relatório será gerado para:
sys_compat_reports / NAME1_to_NAME2 / ARCH
-libs-lista PATH
O arquivo com uma lista de bibliotecas, que deve ser despejado pelo -sistema de despejo opção
ou deve ser verificado pelo -sistemas cmp opção.
-ext| -extended
Se sua biblioteca A deve ser usada por outra biblioteca B e você deseja controlar
a ABI de B, então você deve habilitar esta opção. A ferramenta irá verificar se há mudanças
em todos os tipos de dados, mesmo que não sejam usados por nenhuma função da biblioteca A.
tipos de dados não fazem parte da biblioteca A ABI, mas podem fazer parte da ABI de B
biblioteca.
O esquema curto é:
app C (quebrado) -> lib B (ABI quebrado) -> lib A (ABI estável)
-q| -quiet
Imprime todas as mensagens no arquivo em vez de stdout e stderr. Caminho padrão (pode ser
Alterado por -caminho do log opção):
logs / run.log
-stdout
Imprimir os resultados da análise (relatórios de compatibilidade e despejos ABI) para stdout em vez de
criando um arquivo. Isso permitiria canalizar dados para outros programas.
-formato de relatório FMT
Altere o formato do relatório de compatibilidade. Formatos:
htm - formato HTML (padrão) xml - formato XML
-formato de despejo FMT
Altere o formato do despejo ABI. Formatos:
perl - Formato Data :: Dumper (padrão) xml - Formato XML
-xml
Alias para: --formato de relatório=xml or --dump-formato=xml
-longo GRANDE
Defina a linguagem da biblioteca (C ou C ++). Você pode usar esta opção se a ferramenta não puder
detectar automaticamente um idioma. Esta opção pode ser útil para verificar os cabeçalhos da biblioteca C
(--lang=C) em --apenas cabeçalhos or - estendido modos.
-arco ARCO
Defina a arquitetura da biblioteca (x86, x86_64, ia64, arm, ppc32, ppc64, s390, ect.). o
opção é útil se a ferramenta não puder detectar a arquitetura correta da entrada
objetos.
-binário| -bin | -abi
Mostrar apenas problemas de compatibilidade "binários". Gerar relatório para:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-source| -src | -api
Mostrar apenas problemas de compatibilidade de "Origem". Gerar relatório para:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-limite afetado LIMITE
O número máximo de símbolos afetados listados sob a descrição do alterado
digite o relatório.
OUTROS OPÇÕES:
-teste
Execute testes internos. Crie duas versões binárias incompatíveis de uma biblioteca de amostra e
execute a ferramenta para verificar a compatibilidade. Esta opção permite verificar se
a ferramenta funciona corretamente no ambiente atual.
-test-dump
Capacidade de teste para criar, ler e comparar despejos ABI.
-depurar
Modo de depuração. Imprima informações de depuração na tela. Salvar estágios de análise intermediários
no diretório de depuração:
depurar / LIB_NAME / VERSION /
Considere também usar --jogar fora opção para depurar a ferramenta.
-cpp-compatível
Se seus arquivos de cabeçalho são escritos em linguagem C e podem ser compilados pelo G ++
compilador (ou seja, não use palavras-chave C ++), então você pode informar a ferramenta sobre isso e
acelerar a análise.
-cpp-incompatível
Defina esta opção se os arquivos de cabeçalho C de entrada usarem palavras-chave C ++.
-p| -params PATH
Caminho para o arquivo com os nomes dos parâmetros da função. Pode ser usado para melhorar o relatório
ver se os arquivos de cabeçalho da biblioteca não têm nomes de parâmetro. Formato de arquivo:
func1;param1;param2;param3 ... func2;param1;param2;param3 ...
...
-relpath PATH
Substitua as macros {RELPATH} por PATH no descritor XML usado para despejar a biblioteca
ABI (ver -jogar fora opção).
-relpath1 PATH
Substitua as macros {RELPATH} para PATH no primeiro descritor XML (-d1).
-relpath2 PATH
Substitua as macros {RELPATH} para PATH no segundo descritor XML (-d2).
-caminho de despejo PATH
Especifique um caminho de arquivo * .abi.tar.gz ou * .abi onde gerar um dump ABI. Predefinição:
abi_dumps / LIB_NAME / LIB_NAME_VERSION.abi.tar.gz
-ordenar
Habilite a classificação de dados em dumps ABI.
-caminho do relatório PATH
Caminho para o relatório de compatibilidade. Predefinição:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
-bin-relatório-caminho PATH
Caminho para o relatório de compatibilidade "Binário". Predefinição:
compat_reports / LIB_NAME / V1_to_V2 / abi_compat_report.html
-src-relatório-caminho PATH
Caminho para o relatório de compatibilidade "Fonte". Predefinição:
compat_reports / LIB_NAME / V1_to_V2 / src_compat_report.html
-caminho do log PATH
Caminho de registro para todas as mensagens. Predefinição:
logs / LIB_NAME / VERSION / log.txt
-log1-caminho PATH
Caminho de log para a 1ª versão de uma biblioteca. Predefinição:
logs / LIB_NAME / V1 / log.txt
-log2-caminho PATH
Caminho de registro para a 2ª versão de uma biblioteca. Predefinição:
logs / LIB_NAME / V2 / log.txt
-modo de registro MODA
Altere o modo de registro. Modos:
w - sobrescrever logs antigos (padrão) a - anexar logs antigos n - não gravar logs
-lista-afetado
Gerar arquivo com a lista de símbolos incompatíveis ao lado da compatibilidade HTML
relatório. Use o comando 'c ++ filt @file' do GNU binutils para desmontar os símbolos C ++ em
o arquivo gerado. Nomes padrão:
abi_affected.txt src_affected.txt
-componente NOME
O nome do componente no título e no resumo do relatório HTML. Predefinição:
biblioteca
-título NOME
Altere o nome da biblioteca no título do relatório para NAME. Por padrão, será exibido um
nome especificado por -l opção.
-informação extra DIR
Despeje informações extras para DIR.
-extra-dump
Crie dump ABI estendido contendo todos os símbolos da unidade de tradução.
-força
Tente usar esta opção se a ferramenta não funcionar.
-tolerância NÍVEL
Aplique um conjunto de heurísticas para compilar com sucesso os arquivos de cabeçalho de entrada. Você pode
permitir vários níveis de tolerância unindo-os em uma coluna (por exemplo, 13, 124,
etc.). Níveis:
1 - pula cabeçalhos não-Linux (por exemplo, win32 _ *. H, etc.) 2 - pula cabeçalhos internos (por exemplo
* _p.h, impl / *. h, etc.) 3 - pula cabeçalhos que incluem cabeçalhos não Linux 4 - pula
cabeçalhos incluídos por outros
-tolerante
Ative o nível de tolerância mais alto [1234].
-Verifica
Verifique se o despejo ABI está completo.
-rápido
Análise rápida. Desative a verificação de algumas instâncias do modelo.
-pular-símbolos-internos PADRONIZAR
Não verifique os símbolos correspondentes ao padrão.
-pular-tipos-internos PADRONIZAR
Não verifique os tipos correspondentes ao padrão.
RELATÓRIO:
O relatório de compatibilidade será gerado para:
compat_reports / LIB_NAME / V1_to_V2 / compat_report.html
O log será gerado para:
logs / LIB_NAME / V1 / log.txt logs / LIB_NAME / V2 / log.txt
SAIR CÓDIGOS:
0 - compatível. A ferramenta foi executada sem erros. diferente de zero - incompatível ou
a ferramenta foi executada com erros.
MAIS INFORMAÇÕES:
http://lvc.github.io/abi-compliance-checker/
Use abi-compliance-checker online usando serviços onworks.net