- 博客(69)
- 资源 (11)
- 收藏
- 关注
转载 makefile详解 多行变量 环境变量 目标变量 模式变量 十九
六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[T
2012-07-31 18:54:29 697
转载 makefile详解 变量高级用法 追加变量值 override 十八
三、变量高级用法 这里介绍两种变量的高级使用方法,第一种是变量值的替换。 我们可以替换变量中的共有的部分,其格式是“$(var:a=b)”或是“${var:a=b}”,其意思是,把变量“var”中所有以“a”字串“结尾”的“a”替换成“b”字串。这里的“结尾”意思是“空格”或是“结束符”。还是看一个示例吧: foo := a.o b.o c.o
2012-07-31 18:54:03 706
转载 makefile详解 使用变量 十七
使用变量 ———— 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划
2012-07-31 18:53:36 370
转载 makefile详解 嵌套执行make,定义命令包 十六
四、嵌套执行make 在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。例如,我们有一个子目录叫subdir
2012-07-31 18:53:05 676
转载 makefile详解 书写命令 十五
书写命令 ———— 每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“
2012-07-31 18:52:27 438
转载 makefile详解 自动生成依赖性 十四
八、自动生成依赖性 在Makefile中,我们的依赖关系可能会需要包含一系列的头文件,比如,如果我们的main.c中有一句“#include "defs.h"”,那么我们的依赖关系应该是: main.o : main.c defs.h 但是,如果是一个比较大型的工程,你必需清楚哪些C文件包含了哪些头文件,并且,你在加入或删除头文件时,也需要小心地修改Makefil
2012-07-31 18:51:54 587
转载 makefile详解 多目标 静态模式 十三
六、多目标 Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令是同一个,这可能会可我们带来麻烦,不过好在我们的可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。
2012-07-31 18:51:29 542
转载 makefile详解 伪目标 十二
五、伪目标 最早先的一个例子中,我们提到过一个“clean”的目标,这是一个“伪目标”, clean: rm *.o temp 正像我们前面例子中的“clean”一样,即然我们生成了许多文件编译文件,我们也应该提供一个清除它们的“目标”以备完整地重编译而用。 (以“make clean”来使用该目标)因为,我们并不生成“cle
2012-07-31 18:51:05 400
转载 makefile详解 文件搜寻 十一
四、文件搜寻 在一些大的工程中,有大量的源文件,我们通常的做法是把这许多的源文件分类,并存放在不同的目录中。所以,当make需要去找寻文件的依赖关系时,你可以在文件前加上路径,但最好的方法是把一个路径告诉make,让make在自动去找。Makefile文件中的特殊变量“VPATH”就是完成这个功能的,如果没有指明这个变量,make只会在当前的目录中去找寻依赖文件和目标文件。如果
2012-07-31 18:50:06 887
转载 makefile详解 书写规则 十
书写规则 ———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,
2012-07-31 18:49:34 444
转载 makefile详解 环境变量 工作方式 九
四、环境变量 MAKEFILES 如果你的当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它的Makefile,用空格分隔。只是,它和include不同的是,从这个环境变中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。但是在这里我还是建议不要使用这
2012-07-31 18:49:07 738
转载 makefile详解 包含内容 包含其他文件 八
一、Makefile里有什么? Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。 2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这
2012-07-31 18:48:24 941
转载 makefile详解 清空目标文件的规则 七
每个Makefile中都应该写一个清空目标文件(.o和执行文件)的规则,这不仅便于重编译,也很利于保持文件的清洁。这是一个“修养”(呵呵,还记得我的《编程修养》吗)。一般的风格都是: clean: rm edit $(objects) 更为稳健的做法是: .PHONY : clean clea
2012-07-31 18:47:56 1099
转载 makefile详解 另类风格 六
即然我们的make可以自动推导命令,那么我看到那堆[.o]和[.h]的依赖就有点不爽,那么多的重复的[.h],能不能把其收拢起来,好吧,没有问题,这个对于make来说很容易,谁叫它提供了自动推导命令和文件的功能呢?来看看最新风格的makefile吧。 objects = main.o kbd.o command.o display.o \ insert
2012-07-31 18:47:26 1018
转载 makefile详解 自动推导 五
GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个whatever.o,那么whatever.c,就会是whatever.o的依赖文件。并且 cc -c whatev
2012-07-31 18:46:52 524
转载 makefile详解 变量 四
在上面的例子中,先让我们看看edit的规则: edit : main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o \
2012-07-31 18:46:06 842
转载 makefile详解 如何工作 三
三、make是如何工作的 在默认的方式下,也就是我们只输入make命令。那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。 3、如果edit文件不存在,或是edit所依赖
2012-07-31 18:45:25 1179
转载 makefile详解 规则 二
make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。 首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是: 1)如果这个工程
2012-07-31 18:44:56 805
转载 makefile详解 概述 一
概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会
2012-07-31 18:44:19 413
转载 生成release版本的Android系统 --签名
转自 http://blog.csdn.net/chen_chun_guang/archive/2011/04/15/6325833.aspx网上Android数字签名大多是与Android APK相关,而介绍Android系统签名的方法却不多。正巧前段时间帮别人做CTS 认证,需要用到给Android系统签名。为什么需要给Android系统签个名才能进行CTS认证呢?原来我们通过m
2012-07-31 09:15:23 813
转载 MSM平台linux/android build笔记
对两个命令的分析如下:1/ . ./ccicenv/pid_env设置编译环境以及编译参数:2/ make命令:MSM的make命令全都需要在源码根目录下执行,直接查找整个./build/core/目录会找到很多PHONY目标。简单介绍一部分如下:>>make droid默认的make对象,会编译整个Android系统>>make aboot编译bootload
2012-07-30 09:40:42 2956
转载 Android编译过程详解(三)
Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html Android编译过程详解(三):http://ww
2012-07-28 18:19:43 1320
转载 Android编译过程详解(二)
Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html Android编译过程详解(三):http://ww
2012-07-28 18:18:41 1024
转载 Android编译过程详解(一)
Android编译过程详解(一):http://www.cnblogs.com/mr-raptor/archive/2012/06/07/2540359.html Android编译过程详解(二):http://www.cnblogs.com/mr-raptor/archive/2012/06/08/2541571.html Android编译过程详解(三):http://ww
2012-07-28 18:18:02 772
转载 Android Building System 分析(转)
标签:androidcorepackage变数makefileit 想要了解一個系統,我常會從 makefile或是 building system 下手,以了解系統組成元素為何? 目錄結構為何? 對於Android ,我也不例外。透過了解 building system,我們能知道如何新增、修改、刪除程式,並保有完整性,順利編譯出結果。
2012-07-28 18:17:26 544
转载 同步/异步与阻塞/非阻塞的区别
我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和异步的概念,这两个概念与消息的通知机制有关.举个例子,比如我去银行办理业务,可能选择排队等候,也可能取一个小纸条上面有我的
2012-07-27 16:40:43 642
转载 Linux进程的睡眠和唤醒简析
1 Linux进程的睡眠和唤醒在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。当然,一个进程也可以主动释放CPU的控制权。函数 schedule()是一个调度函数,它可以被
2012-07-22 23:47:25 552
转载 linux进程的休眠(等待队列)
当进程以阻塞的方式通信,在得到结果前进程会挂起休眠。为了将进程以一种安全的方式进入休眠,我们需要牢记两条规则:一、永远不要在原子上下文中进入休眠。二、进程休眠后,对环境一无所知。唤醒后,必须再次检查以确保我们等待的条件真正为真简单休眠完成唤醒任务的代码还必须能够找到我们的进程,这样才能唤醒休眠的进程。需要维护一个称为等待队列的数据结构。等待队列就是一个进程链表,其中包含了等待某
2012-07-22 23:46:13 872
转载 android input设备event处理以及hotplug检测
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wb127.blog.51cto.com/2232662/793116android平台2.3.4,发现插上usb鼠标和键盘开机,那么都能正常使用,一旦拔出以后再插回去,就不能使用了。首先检测/dev/input下的设备节点是否正常,发现拔出和插入设备,节点文件都能
2012-07-20 09:50:58 1983
转载 android之init进程-uevent
Init是linux kernel启动的第一个进程,理解init,对熟悉android系统非常重要。 Android的每个目录下面都有一个非常重要的文件Android.mk,负责编译该目录下面的代码。 System/core/init/android.mk[cpp] view plaincopy "font-size:18px;"> "font-siz
2012-07-20 09:49:38 752
转载 Debug Android and Linux suspend and resume (中文)
攒了一些关于调试Android和Linux下面的suspend 和 resume的经验, 在这里和大家分享一下。希望可以有些帮助, (下面没有写Android专用的, 就是Linux通用的)。1. no_console_suspend 在kernel启动参数里面加上no_console_suspend, 这个是最基本的, 因为kernel在把console suspend掉以后, 不
2012-07-11 10:35:46 666
转载 Android 屏幕旋转
保存下,以后可能会用到,留个思路。http://bbs.imp3.net/thread-10216400-1-1.html android 屏幕旋转屏是LANDSCAPE的,要让它默认显示为PORTRAIT.1.kernel里要旋转FrameBuffer. 启动参数里加入fbcon=rotate:1 (0:正常屏; 1:顺时钟转90度; 2:转180度; 3:顺
2012-07-11 09:20:05 670
转载 Android在标准linux基础上对休眠唤醒的实现(三)
四、android层源码解析在linux之上经过android的软件堆层层封装,最终在上层的java应用程序中使用。休眠唤醒也是从最上层发出的命令,然后一层一层地将参数解析,往最底层传,最后走上标准linux的休眠唤醒之路。 这一部分将会初略分析休眠唤醒机制上linux之上所走的路线。 在linux之上,存在一个hal层,专门做和linux内核
2012-07-11 09:17:02 888
转载 Android在标准linux基础上对休眠唤醒的实现(二)
三、kernel层源码解析 - wakelock的重要地位wakelock在android的休眠唤醒机制中扮演着及其重要的角色,主要源码位于文件:kernel/kernel/power/wakelock.c,kernel/include/linux/wakelock.h中。 wakelocks_init()函数所做的工作是整个wakelock可以工作起来的基础,所有这里先说说这个函数。
2012-07-11 09:11:23 525
转载 Android在标准linux基础上对休眠唤醒的实现(一)
说明:1. Based on linux 2.6.32 and android 2.2,only support SDR(mem).2. 参考文章:http://2695477.blog.51cto.com/blog/2685477/484751http://www.docin.com/p-115475680.htmlhttp://blogold.chinaunix.net/u
2012-07-11 09:08:34 525
转载 新版linux系统设备架构中关于电源管理方式的变更
新版linux系统设备架构中关于电源管理方式的变更based on linux-2.6.32 一、设备模型各数据结构中电源管理的部分 linux的设备模型通过诸多结构体来联合描述,如struct device,struct device_type,struct class,struct device_driver,struct bus_type等。 @kerne
2012-07-11 09:03:07 446
转载 标准linu休眠和唤醒机制分析(四)
suspend第三、四、五阶段:platform、processor、corestatic int suspend_enter(suspend_state_t state){ int error; if (suspend_ops->prepare) { // 平台特定的函数,mtkpm.c,有定义,对pmic和cpu dll的一些设置
2012-07-11 09:01:20 912
转载 标准linu休眠和唤醒机制分析(三)
五、suspend和resume代码走读 下面对suspend分的几个阶段都是按照pm test的5中模式来划分的:freezer、devices、platform、processors、core。suspend第一阶段:freezerint enter_state(suspend_state_t state){ int error;
2012-07-11 09:00:20 767
转载 标准linu休眠和唤醒机制分析(二)
三、pm_test属性文件读写int pm_test_level = TEST_NONE; static const char * const pm_tests[__TEST_AFTER_LAST] = { [TEST_NONE] = "none", [TEST_CORE] = "core", [TEST_CPUS] = "proces
2012-07-11 08:59:13 575
转载 标准linu休眠和唤醒机制分析(一)
说明:1. Based on linux2.6.32, only for mem(SDR)2. 有兴趣请先参考阅读: 电源管理方案APM和ACPI比较.docLinux系统的休眠与唤醒简介.doc3. 本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论4. 基于手上的一个项目来讨论,这里只讨论共性的地方 虽然linux支持三种省电模式
2012-07-11 08:58:03 562
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人