1.编译过程都做了什么事情

2018-09-13  本文已影响39人  aofeilin

.编译过程都做了什么事情

1.C++ OC都是编译语言,编译语言在执行时候,先通过编译器生成机器码,机器码可以直接

在CPU上执行。

2.编译 apple 编译前端 clang 语法分析,语义分析

编译后端,生成机器无关的代码优化。

1. objc. https://www.objccn.io/issue-6-1/

编译过程做了什么事情:

1.https://www.jianshu.com/p/b027a8c4c3a3

  1. com+b 点击消息,点击build,查看编译信息,

1.如果工程有第三方依赖库,首先会build依赖库target,然后build主target。

compile各个.m文件

copy静态资源,包括img,string,font。

compile xib

compile storyboard

compile asset catalogs

process info.plist

link storyboards

run custom script

touch app

sign app

validate app(真机build有)

3.黏贴complies 一行可以看到CompileC这个文件,

可以看到 -W -c path/main.m -o path/main.o 对应类的编译输出.o

libtool:产生 lib 的工具 构建库

4.https://www.cnblogs.com/lilylee/p/4053926.html

下面的命令用了有一段时日了,下次试一下确认一下如果有错再来编辑原文吧(果然有更新,修改一次)。

利用llvm-gcc很容易得到中间码IR:

llvm-gcc -emit-llvm -c hello.c -o hello.bc (先编译二进制码)

llvm-dis hello.bc (llvm-dis出来的就是IR)

好像llvm-gcc -S -emit-llvm test.c -o test.ll 也是中间码。 .ll的后缀是中间码

利用objdump可以得到机器码:

objdump -S test.o (这里的-S一定是大写)

上一篇下一篇

猜你喜欢

热点阅读