当前浏览

海思笔记2013五月

分类目录

展开|收起

看你喜欢

(1) (1) (42) (1) (1) (1) (16) (2) (1) (1) (4) (1) (2) (7) (4) (1) (1) (1) (1) (3) (1) (5) (1) (1) (1) (1) (1) (2) (1) (4) (4) (3) (1) (1) (2) (1) (37) (2) (1) (5) (3) (1) (4) (1) (1) (11) (3) (1) (9) (3) (1) (23) (2) (1) (2) (1) (1) (1) (1)

最新精华

第 1 页,共 2 页12

如何编写makefile【3】- 要点分析(1)

看了上一篇文章的简单例子,我们就会对makefle有了个基本的认识。但是当我们打开一个实际工程的makefile文件时,发现还是看不懂,虽然知道这是一个规则,但不能理解这些规则为什么这样写,而且里面还有一些奇奇怪怪的符号,看一个实际的例子:

根据我自己的体会,初次看到上面的内容一定会发晕,$、%、$@、ifeq、@echo这样奇怪的符号是什么意思?搞不懂的话,没法再往下继续看,所以猜测很多人看到类似的内容就打道回府了,呵呵。其实这些很简单,都有约定好的意义。本节的目的就是讲解实际makefile代码中的一些要点问题,包括这些奇怪的符号,当然还有其它许多更重要的问题。为满足你的好奇心,先把这个例子中的这几个奇怪符号解释一下:

$(OBJ):就是取变量OBJ的值,变量OBJ 定义成目标文件的路径。

%.o:是模式匹配,只要后缀是.o都能匹配。我们知道信令子系统的模块很多,而且各个模块又含很多的的.c文件,如果我们为编译每个.c文件都写一个规则,这样规则就非常多,实际中应用一条规则就可以搞定。就是采用这里的模式匹配技术,比如对tcp模块,其代码(\tcp\source)包括:tcpFunc.c、tcpMoni.c和tcpLink.c,其目标文件分别是tcpFunc.o tcpMoni.o tcpLink.o 。可以写一个规则,其目标是tcp模块整的目标文件,而倚赖文件是这四个文件。根据上一节的介绍,要生成tcp模块整的目标文件,必须要生成各个依赖文件,所以make就会去找如何生成它们的规则,最后都可以匹配到这一条模式匹配规则。这种模式匹配在实际的makefile代码中大量应用,实际也是必须使用,因为每个文件的编译基本是类似的,也不可能每个文件写一个规则。

$@:代表规则中的目标文件名,在多目标的模式规则中,它代表的是那个触发规则被执行的目标文件名。后文可以看出,多目标的规则,可分解成多个单个目标的规则(依赖和命令都一样),多个单目标规则会依次执行,$@表示执行到哪个单目标规则时的目标名。本例的规则只有一个目标,但也这样引用,当然你用$(OBJ)/%.o也可以。

@echo:echo是DOS的回显命令,前面价格@表示不显示echo命令本身,这些都是DOS命令本身的规则,非makefile的定义。实际我们在编译版本时在屏幕上看到的一系列提示信息都是用这样的方法显示出来的。

ifeq:是makefile的一个关键字,和C语言中的条件编译类似,ifeq (_OS_LINUX, $(_OS_TYPE))的意思就是判断_OS_TYPE变量的值(因为其前面有个$)是否等于_OS_LINUX,就是说如果是Linux系统,就这样处理,否则就按else中的那样处理。类似的关键字还有ifneq(判断是否不等),ifdef(判断变量是否已定义),ifndef(判断变量是否没有定义)。…

【阅读全文】

如何编写makefile【2】- 例子

Make工具的每个版本都带一个make info文档,里面详细说明了如何编写makefile文件。网上有一个徐海兵翻译的makeV3.8版本的《GNU make中文手册》,可以很好地用来学习makefile,这里把一些重点的,实际应用中必须掌握的makefile语法规则作一个说明,相当于make手册的精华版。

一个简单的例子:

此例子由3个头文件和8个C文件组成。我们讲述写一个简单的Makefile,来描述如何创建最终的可执行文件“edit”,此可执行文件依赖于8个C源文件和3个头文件。Makefile文件的内容如下:

1.规则的概念

在解释这些语句的意义之前先解释一个makefile中的一个非常重要的概念:规则。上面的文件实际由10个规则组成,如其中的一个:

这个规则说明了编译出main.o需要倚赖两个文件main.c和defs.h,“cc –c main.c”的意思是实际编译main.o的命令行语句(实际编译命令还要包含很多的编译参数,这里只是为了示例)。Makefile中最核心的就是这些规则,其它的内容都是为书写规则服务的。规则可以用下面的描述来抽象表示:…

【阅读全文】

乔布斯在斯坦福大学的演讲

苹果计算机公司CEO史蒂夫·乔布斯6.12在斯坦福大学对即将毕业的大学生们进行演讲时说,从大学里辍学是他这一生做出的最为明智的一个选择,因为它逼迫他学会了创新。 乔布斯对操场上挤的满满的毕业生、校友和家长们说:“你的时间有限,所以最好别把它浪费在模仿别人这种事上。” --同样地,如果还在学校的话,似乎不应该去模仿退学的牛人们。

You’ve got to find what you love,’ Jobs says

Jobs说,你必须要找到你所爱的东西。

This is …

【阅读全文】

C语言静态代码分析工具

以前看到的一个英文网页spinroot.com,列出了流行的C语言静态代码分析工具,比较全面。实际工作中也用了其中2个,感觉有些工具的确很有用。

The Leading Commercial Tools Semmle/ (Odasa)… A relatively new tool, based on【阅读全文】

Stronger – Kelly Clarkson

电视看得越来越少了,前一阵子看了江苏的一个台,啥节目不记得了,就记得后面放的一首英文歌很好听,一个有点胖的女歌手唱得很high,边上很多人在跳舞,这首歌真的很好听,而且给人很励志的感觉,虽然当时一句歌词也没听懂。最搞的是,该台还老是放这首歌,于是我决定查查这歌是谁唱的。不知道歌名,不知道歌词,不知道哪个节目,居然给我搜到了,忘了是百度还是Google的功劳,这记性,唉。不过的确搜了许久,原来是她——Kelly Clarkson,第一届《美国偶像》冠军。

下面是维基百科中的资料:

凱莉·克萊森(Kelly Clarkson,1982年4月24日-)是胜出葛莱美奖的美国流行音乐歌手。2002年,凯莉参加了美国真人秀节目《美国偶像》第一季的比赛,凭著其扎实的唱功和稳定的演出,由全美电视观众投票选为比赛的冠军,成为新世代的美国偶像。凯莉胜出比赛后于2003年推出首张专辑。

个人纪录:…

第一届《美国偶像》冠军 凯莉·克莱森于2002推出的单曲“A Moment Like This闪亮的日子”拥有在告示牌流行榜(Hot 100)由最远距离(第52位)跃上至第一的纪录。此纪录于2007年5月首先被Maroon5以“Makes Me【阅读全文】

CSS禅意花园

学习CSS,早晚会听说这个网站http://www.csszengarden.com/,中文叫作CSS禅意花园,网站首页内容(部分)如下:

“CSS禅意花园”网站的创始人和耕耘者Dave Shea是一位图像设计师,他创立的这个网站获得了很多奖项,包括SouthWest Interactive会议授予的“Best ofShow”。Dave Shea曾在全球的行业大会上发表演讲,其作品被世界各地的书籍和杂志广泛收录。他还是Web标准项目(Web Standards Project,WaSP)的成员,该项目是一个由Web开发人员和设计师组成的小组,致力于推广基于跨平台和标准技术的Web设计。DaveJ~是Web设计机构Bright Creative的拥有者兼总监,其在线出版物mezzoblue.com中所有的Web内容几乎均为Dave所作。

Dave为“CSS禅意花园”网站专门写了一本书,就叫CSS Zen Garden(CSS禅意花园)。全书分为两个主要部分。第1章为第一部分,讨论网站“CSS禅意花园”及其最基本的主题,包含正确的标记结构和灵活性规划等。第二部分包括6章,占据了本书的大部分篇幅。每章剖析“CSS禅意花园”收录的6件设计作品,每章介绍的作品围绕一个主要的设计概念展开,如文字的使用等。通过探索36件设计作品面临的挑战和解决的问题,读者将洞悉主要的Web设计原则以及它们运用的CSS布局技巧,理解CSS设计的精髓,恰当地处理图形和字体来创建界面优美、性能优良且具有强大生命力的网站。原版书自出版以来持续畅销,受到众多网站设计师的推崇。本书适合网站设计人员和网站设计爱好者阅读,更是专业网站设计师必读的经典著作。人民邮电出版社2012年7月出版了该书的修订版:《CSS禅意花园(修订版)》,封面如下:

书中的第一章“追本溯源”详细介绍了“CSS禅意花园”网站的由来。当时(2002年左右)的环境是这样,CSS(Cascading …

【阅读全文】

第 1 页,共 2 页12