Mach-O, skrót od formatu pliku Mach, jest formatem plików wykonywalnych, kodu obiektowego, bibliotek współdzielonych, kodu ładowanego dynamicznie i zrzutów rdzenia. Dla użytkowników systemu UNIX jest to podobne do a.out
, ale z ulepszeniami. Jest to format używany w bibliotekach Mac OS X i iPhone OS dla plików wykonywalnych.
Jak wiadomo urządzenia iOS (iPhone, iPad itp.) Mają różne architektury ARMv6 (iPhone 2G + 3G, iPod Touch) i ARMv7 (iPhone 3GS, iPod Touch 2G + 3G), ale symulatory używane w Xcode działają głównie na Platforma i386. Oznacza to, że klienci biblioteki muszą ustawić oddzielne cele dla symulatora i urządzenia. Oddzielne cele duplikują większość informacji i różnią się jedynie zawartymi w nich bibliotekami statycznymi. Więc jeśli otrzymujesz błąd łącznika Mach-O, oznacza to, że xcode ma problem z połączeniem z jedną z bibliotek dla tego urządzenia docelowego; w wyniku czego kompilacja nie powiedzie się.
Teraz Twoje definicje -
- wykonywalny - gotowy skompilowany maszyna ukierunkowany program do uruchomienia w formacie binarnym.
- Biblioteka dynamiczna - są połączone podczas wykonywania programu - program z odniesieniami do biblioteki dynamicznej zostanie załadowany i połączony z biblioteką podczas uruchamiania (lub na żądanie).
- Pakiety - i identyfikator pakietu pozwalają systemom iOS i OSX rozpoznawać wszelkie aktualizacje aplikacji. Daje to unikalną obecność w aplikacji.
- Biblioteka statyczna - pliki są połączone w czasie kompilacji. kod jest kopiowany do pliku wykonywalnego. Kod w bibliotece, do którego nie odwołuje się twój program, został usunięty. Program z tylko statycznymi bibliotekami nie ma żadnych zależności w czasie wykonywania.
- Plik obiektu do relokacji - to kolejne słowo dla biblioteki dynamicznej. Kiedy łączysz się z biblioteką dynamiczną, adresy zawartych w niej funkcji są obliczane na podstawie miejsca, w którym biblioteka jest załadowana do pamięci. Są "relokowalne", ponieważ adresy zawartych funkcji nie są określone w czasie połączenia. (W statycznej biblioteki, adresy są obliczane w czasie połączenia.)
https: // developer.apple.com/library/mac/#documentation/developertools/conceptual/MachOTopics/1-Articles/building_files.html – iDev