在遇到了无数的Match-O链接错误之后,我想知道这些东西的含义。与其试错解决,我更想了解这些东西背后的概念。具体而言,我想知道以下几点之间的区别:
- 可执行文件
- 动态库
- 捆绑包
- 静态库
- 可重定位目标文件
当我点击连接选项中的Mach-O类型设置时,这些选项会被呈现出来。一些小的定义或链接到适当内容的链接也可以。
在遇到了无数的Match-O链接错误之后,我想知道这些东西的含义。与其试错解决,我更想了解这些东西背后的概念。具体而言,我想知道以下几点之间的区别:
当我点击连接选项中的Mach-O类型设置时,这些选项会被呈现出来。一些小的定义或链接到适当内容的链接也可以。
Mach-O,简称Mach目标文件格式,是一种用于可执行文件、目标代码、共享库、动态加载代码和核心转储的文件格式。对于Unix用户来说,这类似于a.out
,但更加先进。这是Mac OS X和iPhone OS库中用于可执行文件的格式。
正如你所知道的,iOS设备(iPhone、iPad等)有不同的架构ARMv6(iPhone 2G+3G、iPod Touch)和ARMv7(iPhone 3GS、iPod Touch 2G+3G),但Xcode中使用的模拟器大多运行在i386平台上。这意味着库客户端必须为模拟器和设备设置单独的目标。这些单独的目标会复制大部分信息,并且只在包含的静态库方面存在差异。因此,如果您遇到Mach-O链接器错误,这意味着xcode在链接该目标设备的某个库时遇到了问题,从而导致编译失败。
现在让我们来看看这里的定义 -