O que é o formato de ficheiro A?
Arquivos .a contêm bibliotecas de sistema usadas por desenvolvedores de software. Tais arquivos são comumente encontrados em sistemas do tipo Unix - incluindo Linux e macOS - enquanto sistemas Microsoft Windows usam arquivos .LIB para o mesmo propósito. Arquivos .a fornecem funções compiladas e cabeçalhos que podem ser referenciados por arquivos de origem. Bibliotecas com uma extensão .a são comumente referidas como bibliotecas estáticas.
Um arquivo .a é tecnicamente um arquivo no formato ar: um contêiner que contém um ou mais arquivos de objeto compilados (.o). No Linux, os membros são arquivos .o no formato ELF; no macOS, são objetos Mach-O. Todo arquivo .a começa com a assinatura ASCII de 8 bytes !<arch> seguida por uma quebra de linha, tornando-o reconhecível por ferramentas de inspeção de arquivos. Você pode listar o conteúdo do arquivo com ar t libname.a e inspecionar símbolos exportados com nm libname.a.
Programas de computador usam dois tipos de bibliotecas de recursos: bibliotecas estáticas e bibliotecas dinâmicas. Bibliotecas estáticas (.lib ou .a) são tipicamente maiores que as dinâmicas porque seu código é compilado diretamente no programa de destino no momento da vinculação. Bibliotecas dinâmicas - arquivos .SO no Linux, .dylib no macOS - são conectadas a um determinado programa após sua execução ou no meio da execução do programa. Desenvolvedores de programas podem personalizar seu código para trabalhar com várias bibliotecas vinculadas dinamicamente.
A utilidade ar (parte do GNU Binutils no Linux) é a ferramenta padrão para criar e manter arquivos .a. Como o vinculador extrai apenas os arquivos de objeto de que precisa, o código não utilizado de uma biblioteca estática não é incluído no executável final.
Segurança e proteção
RISCO: LOWUm .a consiste em dados de tempo de compilação, não algo que o SO executa, portanto oferece pouco risco direto aos usuários finais. Para desenvolvedores, a preocupação é a confiança na cadeia de suprimentos: uma biblioteca estática maliciosa ou adulterada vincula seu código diretamente ao seu programa, portanto use arquivos .a apenas de fontes de SDK confiáveis e verifique somas de verificação/assinaturas. Um .a de código-fonte Ada é texto simples e inofensivo de abrir.
Detalhes do formato
em resumo- Arquivo de código-fonte Ada - Alguns compiladores/projetos Ada usam .a (e .ada/.adb/.ads) para código-fonte Ada em texto simples - este é o significado que o banco de dados legado registrou, mas é muito menos comum do que a biblioteca estática.
Programas que abrem arquivos A
Detalhes técnicos
especificação profunda| Assinatura do arquivo | «!<arch>\n» (hex: 21 3C 61 72 63 68 3E 0A) no deslocamento de byte 0 |
| Formato de arquivo | ar (Unix Archiver) - mesmo formato de contêiner em sistemas Linux, macOS e BSD |
| Tipo MIME | application/x-archive |
| Tipo de arquivo membro (Linux) | Arquivos de objeto relocáveis ELF (.o) |
| Tipo de arquivo membro (macOS) | Arquivos de objeto relocáveis Mach-O (.o) |
| Tamanho do cabeçalho por membro | 60 bytes - campos ASCII: nome (16 B), timestamp (12 B), UID (6 B), GID (6 B), modo (8 B), tamanho (10 B), marcador de fim (2 B) |
| Membro de índice de símbolos | O GNU ar usa um membro chamado «/»; o BSD/macOS ar usa «__SYMDEF» - mapeia nomes de símbolos para deslocamentos de membros para vinculação rápida |
| Convenção de nomenclatura | lib<nome>.a - ex: libz.a, libssl.a, libpthread.a; o prefixo «lib» é exigido pela flag -l do vinculador |
| Compressão | Nenhuma - os arquivos de objeto membros são armazenados literalmente, sem compressão |
| Comportamento em tempo de vinculação | O vinculador extrai apenas os membros .o que satisfazem símbolos não resolvidos; membros não utilizados não são incluídos no executável de saída |
| Ferramenta de criação padrão | ar (GNU Binutils no Linux; LLVM ar / BSD ar no macOS); invocado como: ar rcs libname.a file1.o file2.o |
| Ferramenta de inspeção de símbolos | nm - lista símbolos exportados, indefinidos e locais; ex: nm libname.a |
| Ferramenta de inspeção de conteúdo | ar t libname.a lista membros; ar x libname.a extrai-os; objdump / otool descompila o código do membro |
| Equivalente no Windows | Biblioteca estática .lib (formato COFF/PE); compiladores cruzados para Windows, como o MinGW, também produzem arquivos .a |
| Faixa de tamanho de arquivo típica | Varia de alguns KB (pequena biblioteca de utilitários) a centenas de MB (ex: libclang_rt.a ou um libc.a completo) |
| Lançado | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Padrão aberto | Sim · livre de royalties |
| Especificação | en.wikipedia.org |
Conversões de A
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos A.