Co to jest format pliku A?
Pliki .a zawierają biblioteki systemowe używane przez programistów. Takie pliki są powszechnie spotykane w systemach uniksopodobnych - w tym Linux i macOS - podczas gdy systemy Microsoft Windows używają plików .LIB do tego samego celu. Pliki .a dostarczają skompilowane funkcje i nagłówki, do których mogą odwoływać się pliki źródłowe. Biblioteki z rozszerzeniem .a są powszechnie nazywane bibliotekami statycznymi.
Plik .a jest technicznie archiwum w formacie ar: kontenerem przechowującym jeden lub więcej skompilowanych plików obiektowych (.o). W systemie Linux elementami są pliki .o w formacie ELF; w macOS są to obiekty Mach-O. Każde archiwum .a zaczyna się od 8-bajtowej sygnatury ASCII !<arch> po której następuje znak nowej linii, co czyni je rozpoznawalnym dla narzędzi do inspekcji plików. Możesz wyświetlić zawartość archiwum za pomocą ar t libname.a i sprawdzić wyeksportowane symbole za pomocą nm libname.a.
Programy komputerowe korzystają z dwóch rodzajów bibliotek zasobów: bibliotek statycznych i bibliotek dynamicznych. Biblioteki statyczne (.lib lub .a) są zazwyczaj większe niż dynamiczne, ponieważ ich kod jest kompilowany bezpośrednio do docelowego programu w czasie linkowania. Biblioteki dynamiczne - pliki .SO w systemie Linux, .dylib w macOS - są łączone z danym programem w momencie jego uruchomienia lub w trakcie wykonywania programu. Programiści mogą dostosować swój kod do pracy z różnymi bibliotekami łączonymi dynamicznie.
Narzędzie ar (część GNU Binutils w systemie Linux) jest standardowym narzędziem do tworzenia i utrzymywania archiwów .a. Ponieważ linker wyodrębnia tylko te pliki obiektowe, których potrzebuje, nieużywany kod z biblioteki statycznej nie jest dołączany do końcowego pliku wykonywalnego.
Bezpieczeństwo
RYZYKO: LOWPlik .a to dane z czasu budowania, a nie coś, co system operacyjny 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 linkuje swój kod bezpośrednio do programu, dlatego należy używać plików .a tylko z zaufanych źródeł SDK i weryfikować sumy kontrolne/podpisy. Plik .a będący źródłem Ada jest zwykłym tekstem i jest bezpieczny do otwarcia.
Szczegóły formatu
w pigułce- Plik kodu źródłowego Ada - Niektóre kompilatory/projekty Ada używają .a (oraz .ada/.adb/.ads) dla zwykłego tekstu źródłowego Ada - jest to znaczenie zarejestrowane w starszych bazach danych, ale jest znacznie rzadsze niż biblioteka statyczna.
Programy otwierające pliki A
Szczegóły techniczne
specyfikacja| Sygnatura pliku | „!<arch>\n” (hex: 21 3C 61 72 63 68 3E 0A) na offsecie bajtu 0 |
| Format archiwum | ar (Unix Archiver) - ten sam format kontenera w systemach Linux, macOS i BSD |
| Typ MIME | application/x-archive |
| Typ pliku elementu (Linux) | Pliki obiektowe relokowalne ELF (.o) |
| Typ pliku elementu (macOS) | Pliki obiektowe relokowalne Mach-O (.o) |
| Rozmiar nagłówka elementu | 60 bajtów - pola ASCII: nazwa (16 B), znacznik czasu (12 B), UID (6 B), GID (6 B), tryb (8 B), rozmiar (10 B), znacznik końca (2 B) |
| Element indeksu symboli | GNU ar używa elementu o nazwie „/”; BSD/macOS ar używa „__SYMDEF” - mapuje nazwy symboli na offsety elementów dla szybkiego linkowania |
| Konwencja nazewnictwa | lib<nazwa>.a - np. libz.a, libssl.a, libpthread.a; prefiks „lib” jest wymagany przez flagę -l linkera |
| Kompresja | Brak - pliki obiektowe elementów są przechowywane dosłownie, bez kompresji |
| Zachowanie w czasie linkowania | Linker wyodrębnia tylko te elementy .o, które zaspokajają nierozwiązane symbole; nieużywane elementy nie są dołączane do wyjściowego pliku wykonywalnego |
| Standardowe narzędzie do tworzenia | ar (GNU Binutils w Linux; LLVM ar / BSD ar w macOS); wywoływane jako: ar rcs libname.a file1.o file2.o |
| Narzędzie do inspekcji symboli | nm - wyświetla listę symboli wyeksportowanych, niezdefiniowanych i lokalnych; np. nm libname.a |
| Narzędzie do inspekcji zawartości | ar t libname.a wyświetla listę elementów; ar x libname.a wyodrębnia je; objdump / otool deasembluje kod elementów |
| Odpowiednik w Windows | Biblioteka statyczna .lib (format COFF/PE); kompilatory skrośne dla Windows, takie jak MinGW, również generują pliki .a |
| Typowy zakres rozmiaru pliku | Od kilku KB (mała biblioteka narzędziowa) do setek MB (np. libclang_rt.a lub pełna libc.a) |
| Wydano | ar archive format from early Unix (1970s); standard static-library extension on Unix/Linux/macOS |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | en.wikipedia.org |
Konwersje A
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki A.