我应该在iOS Objective-C项目中使用什么Mach-O类型?

我应该在iOS Objective-C项目中使用什么Mach-O类型?,ios,objective-c,xcode,xcode8,Ios,Objective C,Xcode,Xcode8,Xcode中构建设置中的Mach-O类型是什么?那么应该设置什么呢 它有以下选项“可执行”“动态库”“捆绑”“静态库”“可重定位对象文件” 我有一个错误“苹果Mach-O链接器错误组”,因为我把它从可执行文件改成了静态库。我的错误消失了,我想知道我改了它可以吗?所有这些选项意味着什么,这样我就不会在未来面临另一个错误。 更多细节 和马赫-O型 这在我的生活中有一些反映。另外,MH_预加载0x5,MH_内核0x4,MH_动态链接器0x7 设置Mach-O类型确定链接器的行为 Framework

Xcode中构建设置中的Mach-O类型是什么?那么应该设置什么呢

它有以下选项“可执行”“动态库”“捆绑”“静态库”“可重定位对象文件”

我有一个错误“苹果Mach-O链接器错误组”,因为我把它从可执行文件改成了静态库。我的错误消失了,我想知道我改了它可以吗?所有这些选项意味着什么,这样我就不会在未来面临另一个错误。

更多细节
和马赫-O型

这在我的生活中有一些反映。另外,
MH_预加载
0x5,
MH_内核
0x4,
MH_动态链接器
0x7

设置
Mach-O类型
确定链接器的行为

Framework target -> Build Settings -> Mach-O Type
  • 可执行文件
    0x2(
    mh_execute
    /
    mh_execute
    )-未链接。用于创建可启动程序-
    应用程序
    应用程序扩展-小部件
    <代码>应用程序目标是默认设置
  • Bundle
    0x8(
    mh\u Bundle
    .Bundle)可加载的Bundle-运行时链接。iOS现在只支持
    测试捆绑包目标
    ,默认设置是生成
    可加载捆绑包

    系统
    ->
    测试捆绑包
    ->
    测试二进制文件
    测试包的位置取决于目标、静态或动态二进制
  • 动态库
    0x6(
    mh\u dylib
    .dylib或无)-加载/运行时链接。
    • 使用
      框架目标
      -
      动态库
      是生成
      动态框架
  • 静态库
    静态库
    .a)-编译时间(构建时间)链接。
    • 使用
      静态库目标
      -
      静态库
      是生成
      静态库
    • 使用
      框架目标
      -
      静态库
      生成
      静态框架
  • 可重定位对象文件
    0x1(
    mh_Object
    .o)-编译时间(构建时间)链接。这是最简单的形式。它是创建可执行、静态或动态格式的基础。可重定位,因为变量和函数没有任何特定地址
使用
otool
确定二进制文件是否为动态文件非常有用

otool -h <path_binary>
//e.g.
otool -h "/Users/alex/Desktop/projects_experiments/ios/LibraryAndFramework/BuildCustom/UtilsSwift/UtilsSwiftFramework.framework/UtilsSwiftFramework"

Mach header
      magic  cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
 0xfeedfacf 16777228          0  0x00           6    30       3488 0x00100085

otool-h
//e、 g。
otool-h“/Users/alex/Desktop/projects\u experiments/ios/LibraryAndFramework/BuildCustom/UtilsSwift/utilsswiftfframework.framework/utilsswiftfframework”
马赫割台
magic cputype cpusubtype caps文件类型ncmds sizeofcmds标志
0xfeedfacf 16777228 0 0x00 6 30 3488 0x00100085
filetype
是一个关键点-6-0x6-动态库