2011-11-22 22 views
23

Czym dokładnie są pliki .a (np. Libcrypto.a) i na czym one polegają? Czy są to pliki .m lub .o lub .h lub .c?Co to jest plik .a (jak libcrypto.a)?

W jaki sposób IOS SDK/Xcode je rozumie? A jeśli uwzględnimy plik .a w naszym projekcie xcode, to czy musimy również skopiować plik z odpowiednimi źródłami? Pliki

+0

Przepraszam, że jestem nowy na tym, a nie odczuwało wiedział, jeśli istnieje, dzięki Ci wyżeł :) – chetan

Odpowiedz

39

są plikami static library. "Zawierają" jeden lub więcej plików .o, tj. Skompilowany kod. Aby z nich korzystać, potrzebujesz (często) plików nagłówkowych (.h), które odpowiadają skompilowanemu kodowi, ale nie potrzebujesz samego kodu źródłowego (.c, .m).

W .a pliki są produkowane przy użyciu narzędzia ar i łącznik (ld), który jest (zazwyczaj) wywoływany przez kompilator zna ich formatu i jak wydobyć odpowiednie fragmenty kodu z archiwum i do swojego pliku wykonywalnego.

+0

Dzięki za szybką odpowiedź Mat Stworzyłem statyczną bibliotekę .a plik dla projektu próbki i kopiowane nagłówek i plik .a w innym projekcie. Ale kiedy próbuję uzyskać dostęp do metod w trybie debugowania, kontrolka wskazuje metody odpowiedniego pliku .m, który utworzyłem .a plik. dlaczego jest to otwarcie pliku .m, jeśli dodałem tylko jego plik .h i .a. – chetan

+0

Informacje dotyczące debugowania zawierają nazwy plików i numery linii. Te informacje są zawarte w plikach '.o', dzięki czemu debuggery mogą pokazać, jaki kod źródłowy wygenerował instrukcje, które przeglądasz. Bez tego widać tylko montaż, który nie jest tak użyteczny. Twój IDE może odwzorować te informacje debugowania na rzeczywiste pliki kodu źródłowego, jeśli ma wystarczającą ilość informacji. – Mat

+0

Dzięki, Więc to mówisz, tylko w trybie debugowania IDE wskazuje na plik źródłowy, a nie na środowisko wykonawcze z powodu pliku .o? Po usunięciu projektu z jego lokalizacji, w trybie debugowania, wyświetla się komunikat "xcode nie może zlokalizować pliku źródłowego" i tam się zepsuje. Ale kiedy przejdę do uruchamiania, nie ma błędu – chetan