¿Qué es el formato de archivo LIB?
Un archivo .lib es un archivo de biblioteca proporcionado como entrada al vinculador. Los archivos .lib son de dos tipos: archivos de biblioteca estática estándar y archivos de biblioteca de importación COFF (Common Object File Format). Los archivos de biblioteca estática contienen módulos de objeto .obj compilados; los archivos de biblioteca de importación contienen stubs de símbolos y ordinales que apuntan a una .dll, proporcionando al vinculador la información necesaria para resolver las dependencias en tiempo de ejecución. La herramienta LIB.EXE se utiliza para crear ambos tipos de archivos de biblioteca. A nivel binario, un .lib es un archivo en formato ar que comienza con la firma de 8 bytes !<arch>, la misma estructura utilizada por las bibliotecas estáticas de Unix .a. Puede inspeccionar el contenido con DUMPBIN /HEADERS o ar -t.
Seguridad y protección
RIESGO: LOWUn .lib son datos de tiempo de compilación, no algo que Windows ejecute, por lo que representa poco riesgo directo para los usuarios finales. Para los desarrolladores, la preocupación es la confianza en la cadena de suministro: una biblioteca estática maliciosa o manipulada vincula su código directamente en su programa, por lo que solo use archivos .lib de fuentes de SDK confiables y verifique las sumas de comprobación/firmas. Los archivos .lib de juegos/aplicaciones no relacionados son archivos de datos inertes.
Detalles del formato
en pocas palabras- Archivo de juego / aplicación (LIB) - Algunos juegos y aplicaciones (por ejemplo, paquetes de recursos de ciertos títulos) utilizan .lib como un contenedor de datos/archivo personalizado no relacionado con las bibliotecas del compilador.
Programas que abren archivos LIB
Detalles técnicos
especificación profunda| Tipo de formato | Archivo de módulos de objeto COFF (biblioteca estática) o stubs de importación (biblioteca de importación) |
| Bytes mágicos | 21 3C 61 72 63 68 3E 0A - ASCII «!<arch>\n» en el desplazamiento de byte 0 |
| Estructura del contenedor | Formato de archivo ar; misma familia de firma de 8 bytes que las bibliotecas estáticas .a de Unix |
| Tipo MIME | application/octet-stream |
| Contenido de lib estática | Miembros .obj de COFF que contienen código de máquina compilado, registros de reubicación y tablas de símbolos |
| Contenido de lib de importación | Tabla de nombres de símbolos, nombre de DLL y stubs de nombre/ordinal de exportación; sin código de máquina ejecutable |
| Uso principal | Entrada del vinculador: consumido por LINK.EXE o ld para resolver referencias de símbolos en el momento de la compilación |
| Herramienta de creación | LIB.EXE (cadena de herramientas MSVC); también ar y dlltool (GNU Binutils / MinGW) |
| Herramientas de inspección | DUMPBIN.EXE /HEADERS, LIB.EXE /LIST, ar -t, nm |
| Índice de símbolos | El primer miembro del archivo es un mapa de símbolos que permite una búsqueda rápida de símbolos durante la vinculación |
| Generación de lib de importación | Generado automáticamente por LINK.EXE al compilar una DLL; creado manualmente con LIB.EXE /DEF:<archivo_def> |
| Compatibilidad del vinculador | Microsoft LINK.EXE, lld-link (LLVM); GNU ld a través de MinGW con compatibilidad parcial |
| Plataforma de destino | Principalmente Windows (Win32 / Win64); cadenas de herramientas heredadas de MS-DOS |
| Codificación | Binario; los registros COFF están alineados con palabras de máquina dentro de los miembros del archivo ar |
| Contraparte en Unix | Archivo de biblioteca estática .a de Unix/Linux, creado con ar y consumido por ld |
| Linaje de desarrollo | Implementación de Microsoft de COFF; COFF mismo se remonta a AT&T Unix System V (1983) |
| Lanzado | COFF lineage from Unix (1980s); MS .lib via Visual C++/MS-DOS toolchains, early 1990s |
| Estándar abierto | Sí · libre de regalías |
| Especificación | learn.microsoft.com |
Conversiones de LIB
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos LIB.