Xcode中的 编译过程以及编译器

一。html

在Xcode里写C语言函数的编译过程前端

1.编译,链接,运行 编程

编译segmentfault

1.什么是编译:将C源程序翻译成计算机能识别的0和1xcode

2.使用什么编译器:3以前用GCC,Xcode4以后使用LLVM编译器(前端clang)架构

 在终端输入:CC -c 文件名.c (cd 进入当前目录下)app

编译成功,会生成.o目标文件编辑器

3.编译器的错误和警告功能:函数

 若是代码有语法问题,编译器会直接报错工具

只要有一个错误❌,程序就不能编译成功,也很差生成.o文件

警告⚠️只是编译的一些建议,并不影响编译经过。

链接

1.链接的做用:将.o文件和C语言函数库组合在一块儿。生成可执行文件

2.由链接器完成:clang链接器里面已经包含了链接指令。

终端输入: cc 文件.o

链接成功,会生成a.out可执行文件。

运行

1.两种方式运行

* 直接双击打开a.out文件

* 终端中使用./a.out指令。

2修改文件内容后,必定要从新编译,链接,再运行。

总结

1整个程序的运行过程

编写程序 ->元到吗 -> 编译 -> 目标文件 -> 链接(C语言函数库)-> 可执行的机器代码 -> 运行

2开发中会遇到哪些错误?如何解决?

语法错误,能够经过编译器的报错信息解决

逻辑错误,须要耐心调试程序

3学习建议

学编程不是学英语

程序的可读性

 

二。

参考:// https://segmentfault.com/a/1190000003101087

Xcode中的 编译过程以及编译器

基本的编译过程分为四个步骤:

  1. 预处理(Pre-process):把宏替换,删除注释,展开头文件,产生 .i 文件。

  2. 编译(Compliling):把以前的 .i 文件转换成汇编语言,产生 .s文件。

  3. 汇编(Asembly):把汇编语言文件转换为机器码文件,产生 .o 文件。

  4. 连接(Link):对.o文件中的对于其余的库的引用的地方进行引用,生成最后的可执行文件(同时也包括多个 .o 文件进行 link)。

     

    在 xcode 编译的过程当中,大部分的命令均可以自解释,不过仍有个别的命令直接看是看不出来干吗的,这里解释一下:
    ld :用于产生可执行文件。
    libtool:产生 lib 的工具。

接下来就是编译过程的控制,在 xcode 中能够经过 Build phases,Build settings以及 Build rules来进行控制。

Build phases主要是用来控制从源文件到可执行文件的整个过程的,因此应该说是面向源文件的,包括编译哪些文件,以及在编译过程当中执行一些自定义的脚本什么的。
Build rules 主要是用来控制如何编译某种类型的源文件的,假如说相对某种类型的原文件进行特定的编译,那么就应该在这里进行编辑了。同时这里也会大量的运用一些 xcode 中的环境变量,完整的官方文档在这里:Build Settings Reference
Build settings则是对编译工做的细节进行设定,在这个窗口里能够看见大量的设置选项,从编译到打包再到代码签名都有,这里要注意 settings 的 section 分类,同时通常经过右侧的 inspector 就能够很好的理解选项的意义了。

最后,要说一下咱们的工程文件.pbxproj,以上的全部的这些选项都保存在这个文件中。固然也包括 target 的信息,项目全部文件的信息,这个文件是一个文本文件,能够用文本编辑器打开。里头的内容基本是可读性比较强的。基本的思路很面向对象,每一个东西都有属性,若是属性是另外一个对象,值就是那个对象的一个『引用』,就是一串数字(惟一的)做为表示。每一个对象都有这样的引用。

 

编译器

首先,编译器是作什么的?编译器是用来把源代码文件转换为更为低级的语言的(同时还有语句的静态分析),而 xcode 使用的clang 编译器的做用就是把源代码转换为更为低级的 LLVM IR(Intermedia Representation),这个 LLVM IR 是操做系统无关的,而后 LLVM 经过这个中间语言来进行下一步的二进制文件的产出。得益于 LLVM 的三层架构,LLVM 能够有多个输入和输出(LLVM 的第一层架构是用于处理输入的,第二层用于优化 IR ,第三层用于输出)这里遇到了一个问题,不了解到底 clang 和 LLVM 之间的关系是什么,估计得明白编译器是怎么作的才能明白。

 

三。

很详细,有须要时能够参考http://https://objccn.io/issue-6-1/

 

四。

GCC编译的四大过程

预处理(Pre-processing)

编译阶段(Compiling)

汇编阶段(Assembling)

连接阶段(Link)

相关文章
相关标签/搜索