En las configuraciones de compilation objective del proyecto Xcode, ¿Qué es el tipo Mach-O?

Después de cansarme de un error de linker de Match-O, quiero saber que esto significa. En lugar de la solución de testing y error, me gustaría saber el concepto detrás de estas cosas. Específicamente, quiero saber la diferencia entre:

  1. Ejecutable
  2. Biblioteca dinámica
  3. Haz
  4. Biblioteca estática
  5. Archivo de object reubicable

Estas son las opciones presentadas cuando hago clic en la configuration de Tipo de Mach-O en la sección Vinculación. Alguna pequeña definición o algún enlace al contenido apropiado también está bien.

Mach-O , abreviatura de formatting de file de object Mach, es un formatting de file para ejecutables, código de object, bibliotecas compartidas, código cargado dinámicamente y volcados de núcleo. Para los usuarios de Unix esto es como a.out pero con mejoras. Este es el formatting utilizado en las bibliotecas OS Mac OS X y iPhone para files ejecutables.

Como saben, los dispositivos iOS (iPhone, iPad, etc.) tienen diferentes architectures ARMv6 (iPhone 2G + 3G, iPod Touch) y ARMv7 (iPhone 3GS, iPod Touch 2G + 3G), pero los simuladores usados ​​en Xcode se ejecutan principalmente en la plataforma i386. Esto significa que los clientes de la biblioteca tienen que configurar objectives separados para el simulador y el dispositivo. Los objectives separados duplican la mayoría de la información, y solo difieren en las bibliotecas estáticas incluidas. Por lo tanto, si obtiene un error linker Mach-O lo que significa es que xcode está teniendo problemas para vincular a una de las bibliotecas de ese dispositivo de destino; como resultado de lo cual la compilation falla.

Ahora tus definiciones,

  1. Ejecutable: progtwig dirigido de máquina comstackda listo para ejecutarse en formatting binary.
  2. Biblioteca dinámica: están vinculados durante el time de ejecución: un progtwig con references a una biblioteca dinámica se cargará y conectará con la biblioteca cuando se inicie (o bajo demanda).
  3. Los packages y el identificador de package le permiten a iOS y OSX reconocer cualquier actualización de su aplicación. Le da una presencia única en la aplicación.
  4. Biblioteca estática: los files están vinculados en el momento de la construcción. El código se copy en el ejecutable. El código de la biblioteca a la que su progtwig no hace reference se elimina. Un progtwig con bibliotecas estáticas solo no tiene dependencies durante el time de ejecución.
  5. Archivo de object reubicable: es otra palabra para una biblioteca dinámica. Cuando se vincula con una biblioteca dinámica, las direcciones de las funciones contenidas en él se calculan, en function de dónde se carga la biblioteca en la memory. Son "reubicables" porque las direcciones de las funciones contenidas no se determinan en el momento del enlace. (En una biblioteca estática, las direcciones se calculan durante el time de enlace).

Según la documentation de Apple,

Definición de tipo Mach-O

Verifique esto para get más detalles Creación de files Mach-O y reference de configuration de compilation Xcode