Linux系统
gjy938815
这个作者很懒,什么都没留下…
展开
-
两篇很牛的vim使用技巧
读本文之前请注意:1. 本文的目标是提供一些vim的使用技巧,利用这些技巧可以提高vim的操作效率。部分技巧在vi上也可以使用,但是现在基本上都是用vim了。2. 本文是整理和总结使用技巧,而非讲解vim入门,因此不会涉及最基本的使用,例如如何上移或下移光标,对此类操作请参阅任何一本vim或者vi教程。3. 本文阅读对象是了解了vim的基本操作,而希望高效地利用vim进行工作的人。熟练转载 2013-06-26 09:59:27 · 525 阅读 · 0 评论 -
Makefile中.PHONY的含义 .
本文转载自http://www.cnblogs.com/hnrainll/archive/2011/04/12/2013377.html Phony TargetsPHONY 目标并非实际的文件名:只是在显式请求时执行命令的名字。有两种理由需要使用PHONY 目标:避免和同名文件冲突,改善性能。如果编写一个规则,并不产生目标文件,则其命令在每次make 该目标时都执行。例如:转载 2013-09-20 09:00:01 · 884 阅读 · 0 评论 -
关于浮点运算 .
在大多数嵌入式平台中,都没有硬浮点运算的支持,浮点数的计算比定点运算慢上百倍。所以尽量不要使用1.5*size+minSize 这样的运算,要用size+size>>1+minSize代替。转载 2013-09-19 21:57:16 · 564 阅读 · 0 评论 -
makefile中宏定义
makefile中宏定义在Makefile中我们可以通过宏定义来控制源程序的编译。只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。如:CFLAGS += -D __KK__相当于#define__KK__或CFLAGS += -D __KK__=__XX__相当于 #define __KK__=__XX__中间也可无空格如:-转载 2013-09-19 21:49:42 · 690 阅读 · 0 评论 -
嵌套执行make
嵌套执行make在一些大的工程中,我们会把我们不同模块或是不同功能的源文件放在不同的目录中,我们可以在每个目录中都书写一个该目录的Makefile,这有利于让我们的Makefile变得更加地简洁,而不至于把所有的东西全部写在一个Makefile中,这样会很难维护我们的Makefile,这个技术对于我们模块编译和分段编译有着非常大的好处。例如,我们有一个子目录叫subdir,这个目录下有个M转载 2013-09-19 21:48:01 · 471 阅读 · 0 评论 -
linux的umask函数详解
linux中的 umask 函数主要用于:在创建新文件或目录时 屏蔽掉新文件或目录不应有的访问允许权限。文件的访问允许权限共有9种,分别是:rwxrwxrwx它们分别代表:用户读 用户写 用户执行 组读 组写 组执行 其它读 其它写 其它执行屏蔽的规则如下:1. 不管屏蔽码是多少,·新创建的文件默认不具有可执行允可权限。·新创建的目录默认具有可执行允可权限。2. 屏蔽码转载 2013-09-19 21:21:55 · 538 阅读 · 0 评论 -
一个makefile中export出来的变量在另外一个makefile中无法访问
【问题背景】一个大的系统,通过一个总的make控制整个项目编译过程。具体make的流程是,在/make下面直接make,会先去make uboot,再去make kernel,然后去make其他的,比如drivers等等。遇到的问题是,由于是使用交叉编译器,对应的交叉编译器的路径,是在uboot中定义的,所以uboot是可以正常交叉编译的。但是编译完uboot,转去编译kernel转载 2013-09-19 21:16:38 · 1116 阅读 · 0 评论 -
makefile 中的 wildcard,foreach 与 patsubst 函数 .
makefile 里的函数跟它的变量很相似——使用的时候,你用一个 $ 符号跟开括号,函数名,空格后跟一列由逗号分隔的参数,最后用关括号结束。例如,在 GNU Make 里有一个叫 'wildcard' 的函 数,它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。你可以像下面所示使用这个命令: SOURCES = $(wildcard *.c转载 2013-09-19 21:09:27 · 627 阅读 · 0 评论 -
Linux脚本编写语法基础 .
Linux脚本编写语法基础介绍:1开头程序必须以下面的行开始(必须方在文件的第一行):#!/bin/sh符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编写脚本完成时,如果要执行该脚本,还必须使其可执行。要使编写脚本可执行:编译 chmod +x filename这样才能用./filename来运行2注释在转载 2013-09-15 15:05:45 · 956 阅读 · 0 评论 -
linux stat函数详解
stat函数讲解表头文件: #include #include 定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值: 执行成功则返回0,失败返回-1,错误代码存于er转载 2013-09-05 16:07:14 · 454 阅读 · 0 评论 -
Linux下通用线程池的创建与使用 .
Linux下通用线程池的创建与使用本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关。另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量。文章的最后,我们给出一个简单示例程序,通过该示例程序,我们会发现,通过该线程池框架执行多线程任务是多么的简单。 为什么需要线程池目前的大多数网络服务器转载 2013-09-04 21:31:53 · 544 阅读 · 0 评论 -
Linux对电平触发与沿触发中断的区别 .
对于电平触发中断和沿触发中断,在Linux中分别用了handle_level_irq和handle_edge_irq进行处理。中断发生后,系统的中断开关会自动处于disable状态,这由CPU的硬件保证(至少arm中是这样),所以两个函数都在中断禁止的环境中执行。 handle_level_irqvoid handle_level_irq (unsigned int irq, stru转载 2013-07-02 08:37:26 · 619 阅读 · 0 评论 -
嵌入式面试题
嵌入式面试题11. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如转载 2013-07-01 08:33:26 · 1160 阅读 · 0 评论 -
inline解析 .
一、inline 关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。 表达式形式的宏定义一例: #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*((Var1)-(Var2))为什么要取代这种形式呢,且听我道来: 1. 首先谈一下在C中使用这种形式宏定义的原因,C语言是一个效率很高的语言,这种宏转载 2013-07-01 08:33:27 · 359 阅读 · 0 评论 -
MACHINE_START MACHINE_END 宏 .
一、定义#define MACHINE_START(_type,_name) \ //板类型,板名字static const struct machine_desc __mach_desc_##_type \ __used \ __attribute__((__section__(".arch.info.init"))) = { \ .nr = MACH_T转载 2013-06-29 09:06:28 · 479 阅读 · 0 评论 -
linux命令码(_IO宏) .
在ioctl.h头文件中定义了命令码命令码用一个32位的整型数表达bit29~31表示命令传输的方向,bit16~29记录要传输的数据的大小,bit8~15表示设备类型(一般用一个ASCII表示),bit0~7表示命令编号其中数据大小可以和方向的bit29重叠29位是特殊位,因为无方向定义值为1也就是无方向的时候会占用第29位,无方向就无所谓数据传输,所以携带数据大小段是0有方转载 2013-06-29 09:07:00 · 480 阅读 · 0 评论 -
list链表 .
一.链表头结构体struct list_head { struct list_head *next, *prev;};二.初始化链表头也就是把list的next和prew指针指向自己static inline void INIT_LIST_HEAD(struct list_head *list){ list->next = list; list-转载 2013-06-29 09:22:39 · 808 阅读 · 0 评论 -
list_for_each_entry
参考:http://blog.sina.com.cn/s/blog_5e99b41e0100rxgf.htmlhttp://hi.baidu.com/shiftedmind/blog/item/1a7c8381e6a67fa56d8119da.html 在Linux内核源码中,经常要对链表进行操作,其中一个很重要的宏是list_for_each_entry:意思大体转载 2013-06-29 09:31:25 · 453 阅读 · 0 评论 -
arm-linux-strip
以下内容来自:http://www.5dlinux.com/article/11/2008/linux_22217.UNIX下文件压缩命令compress大家都比较熟悉了,它的压缩率比较高,和tar命令结合使用来做数据备份是最合适不过了。但compress压缩也有缺点,就是被压缩后的文件需要用命令uncompress解压后才能正常使用。而用strip命令就没有这个问题,它能清除执行文件中不必要转载 2013-09-20 09:39:45 · 651 阅读 · 0 评论