รูปแบบไฟล์ออบเจ็กต์ Mach-O ที่ใช้โดย Mac OS X สำหรับไฟล์ที่เรียกใช้งานได้และไลบรารี่แยกระหว่างไลบรารีที่แชร์และโมดูลที่โหลดแบบไดนามิก ใช้เพื่อดูไฟล์ของotool -hv some_filesome_file
ไลบรารีที่แบ่งใช้ Mach-O มีประเภทไฟล์MH_DYLIBและมีนามสกุล. dylib พวกเขาสามารถเชื่อมโยงกับธงคง linker ปกติเช่น-lfoolibfoo.dylib สามารถสร้างได้โดยการส่ง-dynamiclibแฟล็กไปยังคอมไพเลอร์ ( -fPICเป็นค่าเริ่มต้นและไม่จำเป็นต้องระบุ)
โมดูลที่โหลดได้เรียกว่า "การรวมกลุ่ม" ใน Mach-O พูด MH_BUNDLEพวกเขามีประเภทของไฟล์ พวกเขาสามารถขยายใด ๆ .bundleApple แนะนำให้ใช้ส่วนขยายแต่ซอฟต์แวร์ที่พอร์ตส่วนใหญ่ใช้.soเพื่อความเข้ากันได้ โดยทั่วไปคุณจะใช้ชุดข้อมูลสำหรับปลั๊กอินที่ขยายแอปพลิเคชัน ในสถานการณ์เช่นนี้ชุดข้อมูลจะเชื่อมโยงกับไบนารีแอปพลิเคชันเพื่อเข้าถึง API ที่ส่งออกของแอปพลิเคชัน สามารถสร้างได้โดยการส่ง-bundleแฟล็กไปยังคอมไพเลอร์
ทั้งสอง dylibs และการรวมกลุ่มสามารถโหลดแบบไดนามิกโดยใช้dlAPIs (เช่นdlopen, dlclose) ไม่สามารถลิงก์กับบันเดิลเหมือนกับว่าเป็นไลบรารีที่แบ่งใช้ อย่างไรก็ตามเป็นไปได้ที่มัดเชื่อมโยงกับไลบรารีที่แชร์จริง จะถูกโหลดโดยอัตโนมัติเมื่อโหลดมัด
ความแตกต่างมีความสำคัญมากกว่า ใน Mac OS X 10.0 ไม่มีวิธีในการโหลดไลบรารีแบบไดนามิก ชุดของ API dyld (เช่นNSCreateObjectFileImageFromFile, NSLinkModule) ได้รับการแนะนำให้รู้จักกับ 10.1 ในการโหลดและยกเลิกการรวมกลุ่ม แต่พวกเขาไม่ได้ทำงานให้ dylibs dlopenห้องสมุดเข้ากันได้ที่ทำงานร่วมกับการรวมกลุ่มที่ถูกเพิ่มเข้ามาใน 10.3; ใน 10.4 dlopenมีการเขียนใหม่เพื่อเป็นส่วนดั้งเดิมของ dyld และเพิ่มการรองรับสำหรับการโหลด (แต่ไม่โหลด) dylibs ในที่สุด 10.5 เพิ่มการสนับสนุนสำหรับการใช้dlcloseกับ dylibs และเลิกใช้ API ของ dyld
ในระบบเอลฟ์เช่น Linux, ทั้งใช้รูปแบบไฟล์เดียวกัน ; รหัสที่ใช้ร่วมกันใด ๆ สามารถใช้เป็นห้องสมุดและสำหรับการโหลดแบบไดนามิก
ท้ายที่สุดโปรดทราบว่าใน Mac OS X "มัด" ยังสามารถอ้างถึงไดเรกทอรีที่มีโครงสร้างมาตรฐานที่เก็บรหัสที่ปฏิบัติการได้และทรัพยากรที่ใช้โดยรหัสนั้น มีแนวคิดทับซ้อนบางอย่าง (โดยเฉพาะกับ "ชุดรวมที่โหลดได้" เช่นปลั๊กอินซึ่งโดยทั่วไปจะมีรหัสที่ปฏิบัติการได้ในรูปแบบของชุดมัด Mach-O) แต่พวกเขาไม่ควรสับสนกับชุดรวม Mach-O ที่กล่าวถึงข้างต้น
การอ้างอิงเพิ่มเติม: