编译过程

来源:互联网 发布:高中女神 体验知乎 编辑:程序博客网 时间:2024/05/17 04:03

在学习c语言程序时,我们知道从c代码到可执行文件的转变要经历以下几个步骤:
源代码 》预处理 》编译 》汇编 》链接 》可执行文件

  • 预处理:预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。
  • 编译:将预处理的程序转化成汇编代码的过程。产生.s文件
  • 汇编:将上一步的汇编代码转成成机器码,为每个源文件产生一个.o目标文件,是一个二进制文件。
  • 链接:将多个目标文件和库文件(.so等),链接成看执行文件.out。

Xcode Targets选项下有Other linker flags的设置,用来填写XCode的链接器参数,如:-ObjC -all_load -force_load

  • 参数-Objc 连接器会将所有的OC类和分类都加入到可执行文件中。
  • 参数-all_load 会让链接器把所有找到的目标文件都加入到可执行文件中,注意由于不同的库文件可能包含同一个目标文件,所以使用此参数可能会造成 duplicate symbol错位。
  • -force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其余库文件的按需加载
0 0
原创粉丝点击