Mach-O - Mach-O
![]() | Tento článek má několik problémů. Prosím pomozte vylepši to nebo diskutovat o těchto otázkách na internetu diskusní stránka. (Zjistěte, jak a kdy tyto zprávy ze šablony odebrat) (Zjistěte, jak a kdy odstranit tuto zprávu šablony)
|
![]() | |
Přípona názvu souboru | žádný, .Ó, .dylib, .bundle |
---|---|
Jednotný identifikátor typu (UTI) | com.apple.mach-o-binary |
Vyvinul | Univerzita Carnegie Mellon, Apple Inc. |
Typ formátu | Binární, spustitelný, objekt, sdílené knihovny, skládka jádra |
Kontejner pro | PAŽE, SPARC, PA-RISC, PowerPC a x86 spustitelný kód, výpis paměti |
Mach-O, zkratka pro Mach objekt formát souboru, je formát souboru pro spustitelné soubory, kód objektu, sdílené knihovny, dynamicky načítaný kód a skládky jádra. Náhrada za a.out formátu, Mach-O nabízí více rozšiřitelnost a rychlejší přístup k informacím na internetu tabulka symbolů.
Mach-O používá většina systémů založených na Machovo jádro. Další krok, Operační Systém Mac, a iOS jsou příklady systémů, které používají tento formát pro nativní spustitelné soubory, knihovny a objektový kód.
Rozložení souboru Mach-O
Každý soubor Mach-O je tvořen jedním záhlavím Mach-O, následovaným řadou příkazů pro načtení, následovaných jedním nebo více segmenty, z nichž každý obsahuje mezi 0 a 255 oddíly. Mach-O používá REL přemístění formát pro zpracování odkazů na symboly. Při vyhledávání symbolů používá Mach-O dvě úrovně jmenný prostor který kóduje každý symbol do páru „název objektu / symbolu“, který je poté lineárně vyhledáván, nejprve objektem a poté názvem symbolu.[1]
Základní struktura - seznam proměnných délky „příkazů pro načítání“, které odkazují na stránky dat jinde v souboru[2]—Bylo použito také ve formátu spustitelného souboru pro Přízvuk.[Citace je zapotřebí ] Formát souboru Accent byl zase založen na nápadu od Spice Lisp.[Citace je zapotřebí ]
Binární soubory s více architekturami
Pod Další krok, OPENSTEP, Operační Systém Mac, a iOS, lze kombinovat více souborů Mach-O v a binární multi-architektura. To umožňuje jednomu binárnímu souboru obsahovat kód pro podporu více architektur sady instrukčních sad. Například binární soubor s více architekturami pro iOS může mít 6 architektur instrukční sady, jmenovitě ARMv6 (pro iPhone, 3G a 1. / 2. generace ipod touch ), ARMv7 (pro iPhone 3GS, 4, 4S, iPad, 2, 3. generace a iPod touch 3. – 5. generace), ARMv7s (pro iPhone 5 a iPad (4. generace) ), ARMv8 (pro iPhone 5S ), x86 (pro iPhone simulátor na 32bitových počítačích) a x86_64 (64bitový simulátor).[Citace je zapotřebí ]
Minimální verze OS
Se zavedením Mac OS X 10.6 platforma soubor Mach-O prošel významnou úpravou, která způsobí, že binární soubory zkompilované v počítači se systémem 10.6 nebo novějším budou (ve výchozím nastavení) spustitelné pouze v počítačích se systémem Mac OS X 10.6 nebo novějším. Rozdíl vychází z příkazů načtení, které dynamický linker, v předchozích verzích systému Mac OS X, nerozumí. Další významnou změnou ve formátu Mach-O je změna ve způsobu fungování tabulek Link Edit (najdete v sekci __LINKEDIT). V 10.6 jsou tyto nové tabulky úprav odkazů komprimovány odstraněním nepoužívaných a nepotřebných bitů informací, avšak Mac OS X 10.5 a starší nemohou číst tento nový formát tabulky úprav odkazů. Pro vytvoření zpětně kompatibilních spustitelných souborů lze použít příznak linkeru „-mmacosx-version-min =“.
Další implementace
Některé verze NetBSD přidali podporu Mach-O jako součást implementace binární kompatibility, která umožnila spuštění některých binárních souborů systému Mac OS 10.3.[3][4]
Pro Linux napsal Machinův zavaděč Shinichiro Hamaji[5] které mohou načíst 10,6 binárních souborů. Jako rozsáhlejší řešení založené na tomto zavaděči, Darling Project si klade za cíl poskytnout kompletní prostředí umožňující běh aplikací OS X na Linuxu.
Pro Rubín programovací jazyk, ruby-macho[6] Knihovna poskytuje implementaci binárního analyzátoru a editoru Mach-O.
Viz také
- Tlustá binárka
- Univerzální binární
- Přechod Macu na procesory Intel
- Přechod pro Mac na Apple Silicon
- Xcode
- Porovnání formátů spustitelných souborů
Reference
- ^ „Referenční informace o formátu souboru OS X ABI Mach-O“. Apple Inc. 4. února 2009. Archivovány od originál 19. srpna 2009. Citováno 27. dubna 2016.
- ^ Avadis Tevanian, Jr.; Richard F. Rashid; Michael W. Young; David B. Golub; Mary R. Thompson; William Bolosky; Richard Sanzi. „Unixové rozhraní pro sdílenou paměť a soubory mapované do paměti pod Machem“: 8. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Emmanuel Dreyfus (20. června 2006). „Machova a Darwinova binární kompatibilita [sic] pro NetBSD / powerpc a NetBSD / i386 ". Citováno 18. října 2013.
- ^ Emmanuel Dreyfus (září 2004), Binární kompatibilita Mac OS X na NetBSD: výzvy a implementace (PDF)
- ^ Shinichiro Hamaji, Mach-O loader pro Linux - napsal jsem ...
- ^ William Woodruff, Čistě-Ruby knihovna pro analýzu souborů Mach-O.
externí odkazy
- Referenční příručka k formátu souborů OS X ABI Mach-O (Apple Inc.)
- Darwine a Operační Systém Mac Formáty souborů Manuál –
- Soubory objektů Mach (Dokumentace NEXTSTEP)
- Mach-O Dynamic Library Reference
- Mach-O propojovací a načítací triky
- MachOView