Co to jest format pliku LIB?
Plik .lib to plik biblioteki dostarczany jako dane wejściowe dla linkera. Pliki .lib występują w dwóch rodzajach: standardowe pliki bibliotek statycznych oraz pliki bibliotek importowych COFF (Common Object File Format). Biblioteki statyczne zawierają skompilowane moduły obiektowe .obj; biblioteki importowe zawierają symbole i odniesienia porządkowe wskazujące na plik .dll, dostarczając linkerowi informacji niezbędnych do rozwiązania zależności w czasie wykonywania. Narzędzie LIB.EXE służy do tworzenia obu typów plików bibliotek. Na poziomie binarnym, .lib to archiwum w formacie ar, które zaczyna się od 8-bajtowej sygnatury !<arch> - tej samej struktury używają biblioteki statyczne Unix .a. Zawartość można sprawdzić za pomocą DUMPBIN /HEADERS lub ar -t.
Bezpieczeństwo
RYZYKO: LOWPlik .lib to dane z czasu budowania, a nie coś, co Windows uruchamia, więc stanowi niewielkie bezpośrednie ryzyko dla użytkowników końcowych. Dla programistów problemem jest zaufanie do łańcucha dostaw: złośliwa lub zmodyfikowana biblioteka statyczna dołącza swój kod bezpośrednio do programu, dlatego należy używać wyłącznie plików .lib z zaufanych źródeł SDK i weryfikować sumy kontrolne/podpisy. Niezwiązane z tym archiwum .lib gier/aplikacji to obojętne pliki danych.
Szczegóły formatu
w pigułce- Archiwum gry / aplikacji (LIB) - Niektóre gry i aplikacje (np. paczki zasobów w niektórych tytułach) używają .lib jako niestandardowego kontenera danych/archiwum, niezwiązanego z bibliotekami kompilatora.
Programy otwierające pliki LIB
Szczegóły techniczne
specyfikacja| Typ formatu | Archiwum modułów obiektowych COFF (biblioteka statyczna) lub odniesień importowych (biblioteka importowa) |
| Magiczne bajty | 21 3C 61 72 63 68 3E 0A - ASCII „!<arch>\n” na offsecie 0 |
| Struktura kontenera | Format archiwum ar; ta sama rodzina sygnatur 8-bajtowych co biblioteki statyczne Unix .a |
| Typ MIME | application/octet-stream |
| Zawartość biblioteki statycznej | Elementy COFF .obj zawierające skompilowany kod maszynowy, rekordy relokacji i tablice symboli |
| Zawartość biblioteki importowej | Tablica nazw symboli, nazwa DLL oraz odniesienia do nazw/numerów eksportów - brak wykonywalnego kodu maszynowego |
| Główne zastosowanie | Dane wejściowe linkera: używane przez LINK.EXE lub ld do rozwiązywania odniesień do symboli w czasie budowania |
| Narzędzie tworzące | LIB.EXE (zestaw narzędzi MSVC); także ar i dlltool (GNU Binutils / MinGW) |
| Narzędzia do inspekcji | DUMPBIN.EXE /HEADERS, LIB.EXE /LIST, ar -t, nm |
| Indeks symboli | Pierwszy element archiwum to mapa symboli umożliwiająca szybkie wyszukiwanie podczas linkowania |
| Generowanie biblioteki importowej | Automatycznie generowana przez LINK.EXE podczas budowania DLL; ręcznie tworzona za pomocą LIB.EXE /DEF:<plik_def> |
| Kompatybilność linkera | Microsoft LINK.EXE, lld-link (LLVM); GNU ld przez MinGW z częściową kompatybilnością |
| Platforma docelowa | Głównie Windows (Win32 / Win64); starsze zestawy narzędzi MS-DOS |
| Kodowanie | Binarne; rekordy COFF są wyrównane do słowa maszynowego wewnątrz elementów archiwum ar |
| Odpowiednik w systemie Unix | Archiwum biblioteki statycznej .a w systemie Unix/Linux, tworzone za pomocą ar i używane przez ld |
| Pochodzenie programistyczne | Implementacja COFF firmy Microsoft; sam format COFF wywodzi się z AT&T Unix System V (1983) |
| Wydano | COFF lineage from Unix (1980s); MS .lib via Visual C++/MS-DOS toolchains, early 1990s |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | learn.microsoft.com |
Konwersje LIB
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki LIB.