Xcode运行原理

上图为Xcode编译运行原理,接下来我们一起讲解上图:

     .c文件是源文件   —编码阶段

     .o文件是目标文件  —编译阶段

     .out 的文件是可执行文件链接之后


讲解之前,我们知道计算机只识别0和1,我们写的代码都需要通过编译器进行编译,转换为计算机可识别的0和1.

首先在xcode中创建一个测试项目:  



此时文件还没有执行,当我们按下cmd + r 程序运行,生成可执行文件,如下图:



我们打开这个黑不拉几的test终端:


在终端中出现了程序的结果!


接下来我们自己搞一遍在终端中创建main.c, .o   .out 文件

首先在终端中操作,必须了解一些终端的常用命令,整理如下:

pwd  当前所在的位置

ls查看当前文件夹中的内容

cd 进入指定目录

mkdir  文件夹名称 ——创建一个文件夹

rmdir   文件夹名称      ——删除一个文件夹

rm    文件名 ——删除一个文件

cd ../ 返回上一级

clear 清空终端

open文件夹名称——打开一个文件夹

touch文件名称创建一个文件

cat文件名查看文件内容


 Xcode4之前,Xcode是用GCC编译器来翻译代码

GCC编译器: 开源免费的编译器, C/OC/C++/Java…


Xcode4之后, LLVM(虚拟机 Clang前端就是专门用来编译代码)


//编译

cc -c 文件名翻译我们自己的代码

//链接

cc 文件名将我们自己的代码和系统以及其依赖文件的代码组合在一


cc -c main.c (将我们自己的代码翻译成01)

——> main.i     //替换文件中所有的预处理指令

——> main.s    //汇编

——> main.o    // 二进制


cc  main.o

——> 将我们自己的二进制和依赖的文件的二进制组合在一起,生成一个可执行文件


1: 打开终端  输入pwd,表示当前所在的位置

   cd desktop  进入桌面,为了模拟xcode编译运行原理,首先我们创建一个test文件夹,用来装执行文件.

   这里可以使用终端命令来创建文件夹 mkdir test ,对常用终端命令不熟悉的,可参考上面的一些常用命令




2: 在终端中输入 cd test,进入test文件夹,pwd一下,查看当前的位置,进入这个文件后我们需要创建一个main.c文件

输入命令 touch main.c 会创建一个main.c文件,此时打开test文件夹,会出现一个main.c文件


3: open main.c 命令,用来打开main.c文件,进行编辑



编辑文件的时候,注意: 我们不需要cmd + s保存,因为mac系统编辑文件是自动保存.

4:终端中输入 cc -c main.c 命令,注意test文件中自动生成一个main.o文件,这个文件为目标文件

5: 输入cc main.o  命令.test文件夹中生成一个a.out文件,此文件就是链接文件,所谓链接文件就是自己写的代码转换为二进制后和系统的代码的二进制进行链接,生成一个可执行的a.out文件



6: 最后一步,在命令行中输入 ./a.out  ,注意我们刚才写的代码结果出来了! cat main.c命令,来查看main.c文件中的内容



总结:  

Xcode编译原理:

步骤:

1: 打开终端

2:找到源文件所在的位置

3: 开始编译:

  命令: cc-c main.c

4: 链接

  命令: cc main.o

5: 执行

  命令: ./a.out

注意: 我们在main.c文件中的代码都是没有警告和错误的,如果出现代码错误,如果有错误,clang是不会给我们翻译代码.

1: 如果只有警告没有错误,那么clang会帮我们翻译代码

如果有错误,那么clang就不会给我们翻译代码

2: clang编译器会帮我们检查警告和错误

3: clang编译只会在链接的时候检查函数有没有真正的实现



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white camel

感谢支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值