Xcode Build System

news/2024/7/16 8:55:09 标签: xcode, macos, ide

Xcode Build System

iOS开发者都使用Xcode来开发、编译程序,但是我们真正了解xcode是怎样编译我们的程序到手机上的么,下面我们主要看看xcode的编译系统内容

一、Preprocessor

预处理:在此步骤中xcode会处理代码中的宏,将其展开,处理预处理器指令;处理依赖关系等

二、Compiler

编译器:将OC或者swift编译为机器码,其中clang用来编译OC、C和C++,swiftc用来蓝衣swift。
编译器compiler分为前端和后端,
(1)前端负责

  • 词法分析
  • 语法分析
  • 生成中间代码
  • 创建并管理符号表

  • (2)后段负责
  • 代码优化
  • 不同架构生成不同汇编代码

三、 Assembler

汇编器:将编译产物翻译为机器语言,生成只有数据和代码的Mach-O文件

四、 Linker

链接器:将各种对象文件和库链接合并为一个可以在 iOS 或 macOS 系统上运行的 Mach-O 可执行文件

五、Loader

加载器:将一个程序加载到内存中,并运行执行它。加载程序负责分配运行程序内存空间和初始化寄存器所需的初始状态
请添加图片描述


http://www.niftyadmin.cn/n/1693075.html

相关文章

3.13作业整理

3.13作业整理 计网 尼奎斯特定理与香农定理 尼奎斯特-无噪音理想信道:最大速率2Blog2(V)(bit/s) B:信号频率赫兹,其中的K代表1000而不是1024 V:离散程度,或者说是有几种不…

vue03

一、绑定样式 绑定class样式 写法:class“xxx”,xxx可以是字符串、对象、数组。 (1)字符串写法适用于:类名不确定,要动态获取。 (2)数组写法适用于:要绑定多个样式,个数不确定,名字也不确定。 …

Mybatis常考面试题汇总(附答案)

1、#{}和${}的区别是什么? #{}和${}的区别是什么? 在Mybatis中,有两种占位符 #{}解析传递进来的参数数据${}对传递进来的参数原样拼接在SQL中#{}是预编译处理,${}是字符串替换。使用#{}可以有效的防止SQL注入,提高系统…

vue04

目录 Vue监视数据的原理: 收集表单数据: Vue监视数据的原理: 1.vue会监视data中所有层次的数据。 2.如何监测对象中的数据? 通过setter实现监视,且要在new Vue时就传入要监测的数据。 (1).对象中后追加的属性,Vue默认不做响应式处理 (2).如需给后添加的属性做…

造轮子之封装基类tableViewController

封装基类tableViewController来提升开发效率 列表类视图在开发中应该算是应用最多的了,为了减少不必要的代码量,避免重复造轮子,我在这里封装了一个基类的WMBaseTableViewController。 WMBaseTableViewController里面集合了刷新加载/空数据显…

c# 语言版本

语言版本.NetFrameWork要求Visual Studio版本c#(1.0/1.2).Net Framework 1.0Visual Studio.Net 2002c#2.0.Net Framework 2.0Visual Studio2005c#3.0.NET Framework 3.5Visual Studio2008c#4.0.NET Framework 4.0Visual Studio2010c#5.0.NET Framework 4.5Visual Studio2012c#6…

vue05

目录 一、过滤器 二、指令 三、自定义指令 一、过滤器 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理)。 语法: 1.注册过滤器:Vue.filter(name,callback)或new Vue{filters:{0} 2.使用过滤器:{{ xxx│过滤器名}}或v-bind:属性…

算法题06(删除排列数组中的重复项)

class Solution {public int removeDuplicates(int[] nums) {int n nums.length;if (n 0) {return 0;}int fast 1, slow 1;while (fast < n) {if (nums[fast] ! nums[fast - 1]) {nums[slow] nums[fast];slow;}fast;}return slow;} }