仓酷云

标题: IOS制作之iOS 系列译文:Mach-O 可实行文件仓酷云 [打印本页]

作者: 兰色精灵    时间: 2015-1-18 11:37
标题: IOS制作之iOS 系列译文:Mach-O 可实行文件仓酷云
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。当我们在Xcode中构建一个程序的时分,个中有一部分就是把源文件(.m和.h)文件变化成可实行文件。这个可实行文件包括了将会在CPU(iOS设备上的arm处置器大概你mac上的Intel处置器)运转的字节码。
我们将会过一遍编译器这个历程的做了些甚么,同时也看一下可实行文件的外部究竟是如何的。实在,内里的工具比你看到的要多良多。
让我们先把Xcode放一边,踏进Commond-Lines的年夜陆。当我们在Xcode中构建一个App时,Xcode只是复杂的挪用了一系列的工具罢了。但愿这将会让你更好的分明一个可实行文件(被称之为Mach-O可实行文件),是如何组装起来的,而且是如何在iOS大概osx上实行的
XCrun

先从一些基本性的工具入手下手:我们将会利用一个叫做Xcrun的命令行工具。他看起来很奇异,可是切实其实相称杰出。这个小工具是用来挪用其他工具的。本来的时分我们实行:
1
%clang-v

如今在终端中,我们能够实行:
1
%xcrunclang-v

Xcrun定位Clang,而且利用相干的参数来实行Clang。
为何我们要做这个事变?这看起来毫无重点,胡扯八道。可是Xcrun同意我们利用多个版本的Xcode,大概利用特定Xcode版本内里的工具,大概针对特性的SDK利用分歧的工具。假如你刚好有Xcode4.5和xcode5、利用xcode-select和xcrun你能够选择选择利用来自Xcode4.5内里的SDK的工具,大概来自Xcode5内里的SDK的工具。在年夜多半其他平台上,这将是一个不成能的事变。假如你看一下匡助手册上xcode-select和xcrun的一些细节。你就可以在不安装命令行工具的情形下,利用在终端中利用开辟者工具。
一个不利用IDE的HelloWorld

回到终端,创立一个包括一个c文件的目次:
1
2
3
%mkdir~/Desktop/objcio-command-line
%cd!$
%touchhelloworld.c

如今利用你喜好的文本编纂器来编纂这个文件,比方TextEdit.app:
1
%open-ehelloworld.c

录进上面的代码:
1
2
3
4
5
6
#include<stdio.h>
intmain(intargc,char*argv[])
{
printf("HelloWorld!n");
return0;
}

保留,而且回到终端实行:
1
2
%xcrunclanghelloworld.c
%./a.out

如今你可以在终端上看到熟习的HelloWorld!。你编译了一个C程序而且实行了它。一切都是在不利用IDE的情形下做的。深呼吸一下,乐意乐意。
我们在这里做了些甚么?我们将hellowrold.c编译成了叫a.out的Mach-o二进制文件。a.out是编译器的默许名字,除非你指定一一般的。
HelloWorld和编译器

如今可选择的编译器是Clang(读作:/’kl/)。Chris写了一些更多关于Clang细节的先容,能够参考:aboutthecompiler
归纳综合一下就是,编译器将会读进处置hellowrold.c,输入可实行文件a.out。这个历程包括了十分多的步骤。我们所要做的就是准确的实行它们。
预处置:


语法和语义剖析:


代码天生和优化


汇编程序


毗连器


预处置

编译器将做的第一件事变是处置文件。利用Clang展现一下这个历程:
1
%xcrunclang-Ehelloworld.c

欧耶。输入了413行内容。翻开个编纂器看看究竟产生了甚么:
1
%xcrunclang-Ehelloworld.c|open-f

在文件顶部我们能看到良多以”#”开首的行。这些被称之为行标志语句的语句告知我们它前面的内容来自那里。我们必要这个。假如我再看一下hellowrold.c,第一行是:
1
#include<stdio.h>

我们都用过#include和#import。它们做的就是告知于处置器在#include语句的中央拔出stdio.h的内容。在方才的文件里就是拔出了一个以#开首的行标志。跟在#前面的数字是在源文件中的行号。每行最初的数字是在新文件中的行号。回到方才翻开的文件,接上去是体系头文件,大概一些被当作包裹着extern“C”的文件。
假如你转动到文件开端,你将会发明我们的helloworld.c的代码:
1
2
3
4
5
6
#2"helloworld.c"2
intmain(intargc,char*argv[])
{
printf("HelloWorld!n");
return0;
}

在Xcode中,你能够经由过程利用Product->PerformAction->Preprocess来检察任何一个文件的预处置输入。必定要注重这将会消费一些工夫来加载预处置输入文件(靠近100,000行)。
编译

下一个步骤:文本处置和代码天生。我们能够挪用clang输入汇编代码就像如许:
1
%xcrunclang-S-o-helloworld.c|open-f

看一看输入。我们起首注重到的是一些以点开首的行。这些是汇编指令。其他的是真实的x86_64汇编代码。最初是些标志,就像C中的那些标志一样。
我们夙昔三行入手下手:
1
2
3
.section__TEXT,__text,regular,pure_instructions
.globl_main
.align4,0x90

这三行是汇编指令,不是汇编代码。”.section”指令指出了哪个段接上去将会被实行。比用二进制暗示悦目多了。
下一个,.global指令申明_main是一个内部标记。这就是我们的main()函数。它可以从我们的二进制文件以外看到,由于体系要挪用它来运转可实行文件。
.align指令指出了上面代码的对齐体例。从我们的角度看,接上去的代码将会依照16比特对齐而且假如必要的时分用0
作者: 老尸    时间: 2015-1-21 11:18
要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。
作者: 第二个灵魂    时间: 2015-1-24 12:05
自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉
作者: 因胸联盟    时间: 2015-1-31 15:47
每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。
作者: 精灵巫婆    时间: 2015-2-6 20:22
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
作者: 蒙在股里    时间: 2015-2-18 13:30
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
作者: 爱飞    时间: 2015-3-6 00:41
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
作者: 飘飘悠悠    时间: 2015-3-12 17:34
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
作者: admin    时间: 2015-3-15 11:19
iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
作者: 若相依    时间: 2015-3-17 19:37
其实在培训的过程中,学习到最多的就是查资料的方式,当时感觉老师好坑,什么都不告诉我们,让我们自己去查,但是现在觉得还是要自己解决问题,这样才能理解的更加深入。
作者: 海妖    时间: 2015-3-24 21:38
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
作者: 谁可相欹    时间: 2015-3-26 13:59
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
作者: 飘灵儿    时间: 2015-4-12 14:15
down下code4app网站的每个分类的代码挨着看
作者: 深爱那片海    时间: 2015-4-16 04:05
iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。
作者: 乐观    时间: 2015-4-18 10:44
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
作者: 莫相离    时间: 2015-4-25 21:17
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
作者: 简单生活    时间: 2015-5-6 22:11
在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
作者: 再现理想    时间: 2015-7-1 22:25
众多研发人员积极参与到iOS平台的开发中来也就不足为奇了。
作者: 愤怒的大鸟    时间: 2015-7-10 03:32
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2