O que é o formato de ficheiro LIB?
Um arquivo .lib é um arquivo de biblioteca fornecido como entrada para o vinculador. Arquivos .lib vêm em dois tipos: arquivos de biblioteca estática padrão e arquivos de biblioteca de importação COFF (Common Object File Format). Os arquivos de biblioteca estática contêm módulos de objeto .obj compilados; os arquivos de biblioteca de importação contêm stubs de símbolos e ordinais que apontam para uma .dll, fornecendo ao vinculador as informações necessárias para resolver dependências de tempo de execução. A ferramenta LIB.EXE é usada para criar ambos os tipos de arquivo de biblioteca. No nível binário, um .lib é um arquivo no formato ar que começa com a assinatura de 8 bytes !<arch> - a mesma estrutura usada pelas bibliotecas estáticas Unix .a. Você pode inspecionar o conteúdo com DUMPBIN /HEADERS ou ar -t.
Segurança e proteção
RISCO: LOWUm .lib são dados de tempo de compilação, não algo que o Windows 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 apenas arquivos .lib de fontes de SDK confiáveis e verifique somas de verificação/assinaturas. Os arquivos .lib de jogos/aplicativos não relacionados são arquivos de dados inertes.
Detalhes do formato
em resumo- Arquivo de jogo / aplicativo (LIB) - Alguns jogos e aplicativos (por exemplo, pacotes de ativos de certos títulos) usam .lib como um contêiner de dados/arquivo personalizado não relacionado a bibliotecas de compilador.
Programas que abrem arquivos LIB
Detalhes técnicos
especificação profunda| Tipo de formato | Arquivo de módulos de objeto COFF (biblioteca estática) ou stubs de importação (biblioteca de importação) |
| Magic bytes | 21 3C 61 72 63 68 3E 0A - ASCII "!<arch>\n" no deslocamento de byte 0 |
| Estrutura do contêiner | Formato de arquivo ar; mesma família de assinatura de 8 bytes das bibliotecas estáticas .a do Unix |
| Tipo MIME | application/octet-stream |
| Conteúdo da lib estática | Membros .obj COFF contendo código de máquina compilado, registros de realocação e tabelas de símbolos |
| Conteúdo da lib de importação | Tabela de nomes de símbolos, nome da DLL e stubs de nome/ordinal de exportação - sem código de máquina executável |
| Uso primário | Entrada do vinculador: consumido pelo LINK.EXE ou ld para resolver referências de símbolos no momento da compilação |
| Ferramenta de criação | LIB.EXE (MSVC toolchain); também ar e dlltool (GNU Binutils / MinGW) |
| Ferramentas de inspeção | DUMPBIN.EXE /HEADERS, LIB.EXE /LIST, ar -t, nm |
| Índice de símbolos | O primeiro membro do arquivo é um mapa de símbolos que permite a busca rápida de símbolos durante a vinculação |
| Geração de lib de importação | Gerado automaticamente pelo LINK.EXE ao compilar uma DLL; criado manualmente com LIB.EXE /DEF:<deffile> |
| Compatibilidade do vinculador | Microsoft LINK.EXE, lld-link (LLVM); GNU ld via MinGW com compatibilidade parcial |
| Plataforma de destino | Principalmente Windows (Win32 / Win64); toolchains legadas do MS-DOS |
| Codificação | Binário; os registros COFF são alinhados por palavras de máquina dentro dos membros do arquivo ar |
| Contraparte Unix | Arquivo de biblioteca estática .a do Unix/Linux, criado com ar e consumido por ld |
| Linhagem de desenvolvimento | Implementação Microsoft do COFF; o próprio COFF remonta ao AT&T Unix System V (1983) |
| Lançado | COFF lineage from Unix (1980s); MS .lib via Visual C++/MS-DOS toolchains, early 1990s |
| Padrão aberto | Sim · livre de royalties |
| Especificação | learn.microsoft.com |
Conversões de LIB
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos LIB.