《笨兔兔的故事——带你了解Ubuntu,了解Linux》
第18节作者:
懒蜗牛Gentoo 今天一大早,就见超级牛力喊着自己的外号就冲出去了,过了一会运回来一大包东西。我一看,包上写的是binutils。
binutils是一堆用来做开发的工具,也就是用来创造我们软件的工具。人类用他们熟悉的语言描述出一个程序的功能,各种动作,各种特性等等,然后通过这些工具把他们描述的软件制作出来。他们用来描述程序的语言可不是汉语,也不是英语,什么南斯拉夫语,北斯拉夫语的那更不是,而是编程语言。像C语言啊,C++啊这样的。这些语言写的叫做程序源码,源码就像建筑的图纸一样,有了图纸,再有各种工具和材料,就可以盖出楼房来。同样,有了源码,再有各种工具,就可以创造出程序来。像我啊,什么超级牛力啊,狐狸妹妹啊,等等,都是这么来的。现在主人装了binutils,难道说主人要开始学习创造软件了?
果然,只见主人打开了vim,开始设计着他的第一个软件——我们就叫他Rubbish 1号吧。
三下五除二,Rubbish1号的"图纸"完成了,主人叫过gcc啊,ld那几个哥们,他们都是负责把源码变成程序的,我们就统称他们“包工队”吧。包工队的哥儿几个凑在一起拿过图纸来看了看,点点头,立马开始施工,瞬间,Rubbish1号诞生了!这是主人创造的第一个程序啊。这个程序到底会干什么呢?我们暂时不知道,刚刚制作出来的程序是在磁盘里的,我们知道,在磁盘里的程序是只能睡觉,不能干活的。估计主人马上会叫他去内存干活去。
果然,主人很快让我去叫醒Rubbish1号,我慢慢的走过去,捅捅还冒着热气的Rubbish1号(刚出锅嘛,可不冒热气,呵呵),温柔的对法说:那个,起床干活啦。只见Rubbish1号立刻飞身跳进内存,跑进内存后大喊一声:“Wa Sai~~~~”然后,跑回去继续睡觉。 -_-b 我说主人呐,人家都编什么helloworld之类的,好歹也算句英文啊,你怎么编个只会喊哇塞的呢。
虽然Rubbish1号能干的事情不多,不过主人还是很满意,于是又拿来Rubbish1号的图纸改起来。10分钟后,又把图纸交给包工队,包工队的哥儿几个凑在一起拿过图纸来看了看,点点头,立马开始施工,瞬间,Rubbish2号诞生了!然后主人让我叫醒Rubbish2号,然后我走过去叫他,只见Rubbish2号立刻飞身跳进内存,跑进内存后大喊一声:“Wa Sai~Sai~Sai~Sai~Sai~Sai~Sai~”然后,跑回去继续睡觉。主人成功的用for循环创造了一个结巴,唉~
日期:2009-10-09 15:29:07
49回修改了一下,由于天涯不能改帖,就当是49.5回吧
49.5()
15分钟后,Rubbish3号的图纸毫无悬念的完成了,图纸交给包工队,包工队哥儿几个凑在一起拿图纸看了看,点点头,立马开始施工,瞬间,Rubbish3号诞生,然后我去叫醒他,然后他立刻飞身跳进内存,对metacity(Gnome的窗口管理器)说:我要一个窗口。metacity赶紧给他画好一个,然后他对着窗口喊“Wa Sai~Sai~Sai~Sai~Sai~Sai~Sai~”,然后毫无悬念的又回去睡觉了。图形界面的结巴……
当当当~~,Rubbish4号诞生,他这回没让metacity画窗口,而是在终端打印出了一句话:Please Input a Number:然后就等着主人输入。主人输入了两个数:5 3,然后4号就大声喊:“Wa~Wa~Wa~Wa~Wa~ Sai~Sai~Sai~”——程控结巴!
5号,5号闪亮登场拉~他进来之后,紧闭双目,念动咒语“唵木哒咪咪呀~~分!”然后只见白光一闪,边成了两个!两个5号同时喊:
“Wa~Wa~Wa~Wa~Wa~Wa~ Sai~”
“Wa~Wa~Wa~Wa~Wa~Wa~ Sai~”
二重结巴!
日期:2009-10-09 15:30:05
(50) Bug
自从Rubbish38号过分淘气的把狐狸妹妹的记事本搞坏了之后,主人就不怎么搞设计了。人家狐狸妹妹工作的时候有许多东西要记录的,比如网页用什么字体显示啦,主人喜欢去那些网站啦之类的东西,狐狸妹妹都会写成文件存放在自己的那个目录里。那天,那个Rubbish38号一进工作间就上窜下跳,整的大家都不得安生。一上来就要创建文件,你说你建就建吧,临时文件往/tmp里建,有用的文件你自己建个目录起个明白点的名字建,都行。他非要把临时文件往狐狸妹妹的那个目录里建,删的时候还顺手把狐狸妹妹的文件也给删了,闹得狐狸跟失忆了似的。主人再打开她的时候,模样也变了——因为不记得主人喜欢什么样子的了。主人说:去我最常去的那个网站。她眨眨眼问:哪啊?把主人气的说不出话来。
Rubbish38号还老申请空间——就是申请内存呐,一会管我要8k,一会又管我要1M。可您申请了,我给你了,你倒是好好用啊。这家伙好像健忘,这次用完了之后就忘了,下次再用的时候又申请新的。我们这工作间里面空间的申请是有很严格的规定的。一个程序如果要想使用工作间里的空间,要向我提出申请,我根据工作间里的情况告诉他,哪块哪块归你,然后这个程序就去用去了。那块地方就不许别的程序访问了,这都是有严格的界限的。等到这个程序用完了这块空间,他应该跟我说一声,说我用完了,这块地方可以再给别的程序用了。这个过程就叫释放。一个有知识有道德有理想的程序,在他回硬盘睡觉以前应该释放掉所有他申请过的空间的。可是那个38号就不管这套,只管申请,从不释放,整的工作间里到处都是他申请的空间。好在我们这工作间足够大,他也不会长时间运行,否则非出事不可。这可是内存泄漏啊,在我们软件界,内存泄漏是和瓦斯泄漏同样严重的事故。工作间规章制度第三条明确写着——禁止申请不释放!就在第四条禁止抽烟的上面。(当然不能抽烟,内存都冒烟了机器还能用么?)好在我是个先进的系统,一个程序退出之后,我会根据他的申请记录查看他有没有申请了没释放的空间,如果有的话就强制释放掉——你都睡觉去了,你申请的空间肯定用不着了吧。
日期:2009-10-13 16:08:00
(51)施工
主人不搞创作了,包工队的哥几个也就闲了。包工队主要成员有gcc,cpp,as,ld四个人,其中gcc是老大,其他几个干什么活都得听他调遣。主人一般也只跟gcc打交道,当写好了图纸——也就是源代码,比如叫test.c吧,写好了之后就直接把图纸交给gcc去处理就好了,gcc会去调动其他人进行各种处理。
一般来说,gcc拿到图纸后,会首先叫来cpp进行预处理。预处理主要就是将文件里的宏定义进行展开。什么是宏定义呢?主人一般都比较懒,或者说,他们人类能力有限,不愿意写好多重复的,类似的东西,就把这些都定义成宏。比如,这么写#define TOTAL_NUMBER 18353226 就是定义总数为一千八百三十五万三千二百二十六,那么以后再要用这个总数的时候,就直接写TOTAL_NUMBER就好了,不用写那一大串数字。而且,如果总数变了,只要在最初#define的位置修改一次就可以,反正就是为了偷懒。那么cpp的任务就是把这类的宏定义都替换回去,把所有的TOTAL_NUMBER都替换成18353226,否则他们老大gcc看不懂,老大看不懂,那就没法继续往下干了,因为经过cpp预处理之后的文件就要交给gcc去编译了。
【网站提示】 读者如发现作品内容与法律抵触之处,请向本站举报。 非常感谢您对易读的支持!
举报
© CopyRight 2011 yiread.com 易读所有作品由自动化设备收集于互联网.作品各种权益与责任归原作者所有.