Linux
蜗牛快跑
这个作者很懒,什么都没留下…
展开
-
线程控制--私有数据
在多线程环境下,进程内的所有线程共享进程的数据空间,因此全局变量为所有线程共有。在程序设计中有时需要保存线程自己的全局变量,这种特殊的变量仅在某个线程内部有效。如常见的变量errno,它返回标准的出错代码。errno不应该是一个局部变量,几乎每个函数都应该可以访问它;但它又不能作转载 2011-08-18 17:44:49 · 684 阅读 · 0 评论 -
跟我一起写 Makefile(八)
六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键转载 2012-02-29 11:07:00 · 516 阅读 · 0 评论 -
跟我一起写 Makefile(十)
四、foreach 函数 foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是: $(foreach ,,) 这个函数的意思是,把参数中的转载 2012-03-01 09:25:36 · 486 阅读 · 0 评论 -
跟我一起写 Makefile(十一)
make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码:转载 2012-03-01 10:39:07 · 538 阅读 · 0 评论 -
跟我一起写 Makefile(十二)
隐含规则————在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的转载 2012-03-01 11:29:15 · 448 阅读 · 0 评论 -
跟我一起写 Makefile(十三)
五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符。"%"的意思是表示一个或多个任意字符。在依赖目标中同样可以使用"%",只是依赖目标中的"%"的取值,取决于其目标。有一点需要注意的是,"%"的展开发生在变量和函数的展开之后,变量和函数的展开发生在make载入Makefile时,而模式规则中的"%"则发生转载 2012-03-02 11:43:53 · 444 阅读 · 0 评论 -
跟我一起写 Makefile(十四)
使用make更新函数库文件———————————函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。一、函数库文件的成员一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成: archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"转载 2012-03-02 11:45:42 · 550 阅读 · 0 评论 -
跟我一起写 Makefile(二)
三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。 3、如果edit文件不存在,或是edit所依赖的后面的转载 2012-02-26 17:44:10 · 591 阅读 · 0 评论 -
跟我一起写 Makefile(三)
Makefile 总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我转载 2012-02-26 18:26:55 · 534 阅读 · 0 评论 -
跟我一起写 Makefile(九)
使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $( )或是 ${ }这里,就是函数转载 2012-02-29 11:28:55 · 471 阅读 · 0 评论 -
跟我一起写 Makefile(六)
书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin/转载 2012-02-27 21:13:14 · 453 阅读 · 0 评论 -
跟我一起写 Makefile(五)
六、多目标Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令是同一个,这可能会可我们带来麻烦,不过好在我们的可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。转载 2012-02-27 12:49:54 · 4275 阅读 · 1 评论 -
linux内核镜像格式
一、Linux内核镜像格式 Linux内核有多种格式的镜像,包括vmlinux、Image、zImage、bzImage、uImage、xipImage、bootpImage等.(1)kernel镜像格式:vmlinux vmlinuz是可引导的、可压缩的内核镜像,vm代表Virtual Memory.Linux支持虚拟内存,因此得名vm.它是由用户对内核源码编译得到,实质转载 2011-12-09 20:12:39 · 620 阅读 · 0 评论 -
Linux2.6 内核的 Initrd 机制解析
1.什么是 Initrdinitrd 的英文含义是 boot loader initialized RAM disk,就是由 boot loader 初始化的内存盘。在 linux内核启动前, boot loader 会将存储介质中的 initrd 文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的 initrd 文件系统。在 boot loader 配置了 initrd转载 2011-12-09 21:26:25 · 550 阅读 · 0 评论 -
initrd的功能
为什么要引入initrd?Linux启动过程中肯定要载入内核镜像,在此过程中有些要素必须考虑:首先,内核镜像不能太大。由于受到各种硬件和兼容性的限制,Linux的内核镜像不能太大,但是这并不容易做到。Linux内核的核心部分本身就不小了;而且还必须加入会使用到的驱动程序。其次,要支持尽可能多的硬件设备。我们在启动过程中有一件重要工作:挂载root文件系统,因为进一步的数据和应用软件都在转载 2011-12-09 21:08:54 · 651 阅读 · 0 评论 -
实现开发板与虚拟机linux系统间文件共享
为实现宿主机上交叉编译后的应用程序能方便的下载到嵌入式开发板上运行,一般通过在开发板上采用网络挂载虚拟机nfs文件系统实现实验环境:宿主机是虚拟机centos5.4目标机是mini2440上的linux这里我用交叉网线来连接一,要在虚拟机安装nfs服务器(1)需要安装下面两个文件# rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm portma转载 2011-12-30 11:32:54 · 5883 阅读 · 1 评论 -
嵌入式系统 Boot Loader 技术内幕
1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建转载 2011-12-29 10:59:14 · 508 阅读 · 0 评论 -
跟我一起写 Makefile(一)
跟我一起写 Makefile 陈皓概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软转载 2012-02-26 12:48:02 · 708 阅读 · 0 评论 -
跟我一起写 Makefile(七)
使用变量————在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以转载 2012-02-28 10:28:29 · 479 阅读 · 0 评论 -
跟我一起写 Makefile(四)
书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,转载 2012-02-26 18:54:49 · 550 阅读 · 0 评论 -
Linux 初始 RAM 磁盘(initrd)概述
简介: Linux® 初始 RAM 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd 文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,并释放内存。在很多嵌入式 Linux 系统中,initrd 就是最终的根文件系统。本文将探索 Linux 2.6 的初始 RAM 磁盘,包转载 2012-03-21 10:42:57 · 644 阅读 · 0 评论