
L.Linux 开发
do2jiang
http://www.mythroad.net/modou
展开
-
变参函数的设计原理
理解va_list、va_start、va_arg、va_end原理及其使用方法 概述由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论. 定义大家先看几宏.在VC++6.0的include有一个stdar原创 2009-04-22 15:33:00 · 912 阅读 · 0 评论 -
USB2COM驱动的加载步骤之备忘
USB2COM驱动的加载步骤之备忘蒋冬冬 2009-5-8do2jiang@gmail.com 1.make menuconfig usb support项中(M)USB Serial Converter Surpport,(M)usb generic serial driver选中,(M)usb prolific 2303 single port serial原创 2009-05-17 17:14:00 · 1728 阅读 · 0 评论 -
嵌入式系统启动常见问题与解决方案备忘录
嵌入式系统启动常见问题与解决方案备忘录 蒋冬冬 收集于网络,2009-5-1 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Number OMAP5912 OSK # (tftp下载好kernel的uImage后就停止在这,不能启动kernel) 问题原因:启动参数设置错误,0x3原创 2009-05-17 15:42:00 · 5167 阅读 · 1 评论 -
RHEL4内核编译步骤简介
RHEL4内核编译步骤简介2.6系列内核的配置安装较以前的版本已经相当容易,在RHEL4下面,我们可以通过如下几个简单的步骤来实现。内核编译前请确保系统里gcc是可用的!1、到http://www.kernel.org/下载源码包 在这里我们假设下到的源码包为linux-2.6.10.tar.gz2、解压压缩包,并移动到/usr/src下 #tar -zxvf linux-2.6.10.t原创 2009-05-19 12:50:00 · 1481 阅读 · 0 评论 -
Ho to Use GNU gcc
Ho to Use GNU gcc蒋冬冬 2009 摘自SEMAN的cppblog网博客非常感谢 SEMAN 的文档整理工作[介绍] gcc和g++分别是GNU C & C++编译器 gcc/g++在执行编译工作的时候,总共需要4步:1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为原创 2009-05-19 21:06:00 · 1041 阅读 · 0 评论 -
Warning:系统时钟不一致
Warning:系统时钟不一致这个警告是我在编译APACHE2的时候碰到的。之前我更改了系统的日期和时间,从而导致了系统当前时间和内核系统时间的不一致。用下面命令问题解决:hwclock --systohc如果是把内核时间更新到当前时间,就用下面的命令:hwclock --hctosys下面文字是一个对LINUX时间设置的解析:修改Linux时间一般涉及到3个命令: date,原创 2009-05-20 09:53:00 · 1288 阅读 · 0 评论 -
查看Linux2.6内核cpio格式的initrd镜像文件之备忘录
查看Linux2.6内核cpio格式的initrd镜像文件之备忘录蒋冬冬 2009-5-24do2jiang@gmail.com1. 将initrd解压gunzip initrd-2.6.16.37-0.9.img2. 挂载initrd, mount -o loop initrd-2.6.16.37-0.9-smp /mnt/loop 却原创 2009-05-24 00:33:00 · 3545 阅读 · 0 评论 -
在Red Hat Linux中自动运行程序
在Red Hat Linux中自动运行程序1.开机启动时自动运行程序Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init。init根据配置文件继续引导过程,启动其它进程。通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序。例如:编辑 /etc/rc.d/rc.local 文件,在文件最末原创 2009-05-23 12:41:00 · 1102 阅读 · 0 评论 -
skyeye移植到windows下,喜欢的朋友随意下!
前段时间用了下skyeye进行arm板子的模拟,觉得挺好的 可以不用带着板子,随时随地开发,由于用的是vmware+linux+skyeye跑起来实在太慢,无法忍受~决定移植到windows下来,网上查找了下资料,帖子如下 http://www.yuanma.org/data/2006/0412/article_243.htm 按照上面的步骤来,没什么大问题,在sdl和skyeye 的编译过程原创 2009-06-15 18:14:00 · 3645 阅读 · 0 评论 -
Linux下patch的制作和应用(转)
因为在u-boot移植过程中,有几处通用文件要修改,如果每次都要手动修改就太麻烦了。制作补丁可以解决这个问题。学习资料的收集比较简单,方法一类似于这种初级问题网上资料非常丰富,google或者baidu搜索一下,然后选择有价值的资料,方法二是阅读man在线文档。完成收集工作,当然最终要在自己的Linux上作实验,比较总结,消化吸收为自己的东西。要除去这么一种错误思想:一定要学全。要知道,一次原创 2009-08-24 09:40:00 · 714 阅读 · 0 评论 -
cdecl, stdcall, pascal,fastcall 调用约定区别
调用约定 压参数入栈顺序 把参数弹出栈者 函数修饰名 (Calling convention) --------------------------------------------------------------------------------------------------------__cdecl 右->左转载 2009-08-28 22:57:00 · 1500 阅读 · 0 评论 -
成功移植U-boot-1.2.0到S3C2410
文章说明:calmarrow(lqm)原创文章引自:http://piaoxiang.cublog.cn 前段时间移植了vivi-0.1.4,也对源代码进行了解析学习。原本的想法是给vivi增加tftp功能,那么就需要写cs8900a驱动(我用的网卡芯片是CS8900A-CQ3Z),然后呢实现tftp协议,最后添加到vivi支持的命令集中转载 2009-08-31 11:20:00 · 1809 阅读 · 0 评论 -
fopen与open区别
(一)1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”,装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存“缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速原创 2009-09-14 15:39:00 · 1452 阅读 · 0 评论 -
shell脚本学习-2
1.用Shell编程,判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下。 #!/bin/bash#1.sh#判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下#file executable: chmod 755 1.shPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/b原创 2009-09-28 13:01:00 · 1483 阅读 · 0 评论 -
shell脚本学习-4(*赋值的结果)
先让我们来看下,星号赋值的情况: [rocrocket@rocrocket ~]$ myvar=*[rocrocket@rocrocket ~]$ echo $myvarapache-tomcat-5.5.26.tar.gz audiodump.wav Desktop Documents Download dwhelper educonn.tar.gz Music Pictures P原创 2009-09-28 15:53:00 · 1742 阅读 · 0 评论 -
shell脚本学习-6(sed命令学习)
5 sed中有选项么?有没有什么比较常用的?sed最主要的就是command部分,把这部分玩转了,你就已经很厉害了,而玩转这部分的前提是玩转正则表达式。尽管如此,sed的选项部分的-n选项仍然是非常重要,理解了它,对于你提高sed水平也是至关重要。前面提到,sed会将模式空间里的行经过处理后输出到标准输出,这是默认的处理方式。就是说,除非你使用d命令来删除此行,否则它无论变成什么样子,无论原创 2009-09-28 17:09:00 · 1982 阅读 · 0 评论 -
shell脚本学习-8(sed命令学习)
例十 如果设定了很多-e的command,它们的执行顺序是怎样的呢?[rocrocket@rocrocket programming]$ cat mysed.txtBeijing 2003Beijing 2004Beijing 2005Beijing 2006Beijing 2007Beijing 2008[rocrocket@rocrocket programming]$ sed -e ’s原创 2009-09-28 17:11:00 · 1220 阅读 · 0 评论 -
shell脚本学习-10(tr、uname、chkconfig命令学习)
tr指令从标准输入设备读取数据,经过字符串转译后,输出到标准输出设备。cat filename |tr u n :用于在屏幕上将filename文件中的u替换为n,而实际文件中未作替换cat filename | tr -d abc 在屏幕上将filename内容中的所有出现的a或b或c字符删去,并显示出来cat filename|tr [:lower:] [:upper:] 将原创 2009-09-28 17:21:00 · 2086 阅读 · 0 评论 -
C语言中巧用正则表达式(1)
如果用户熟悉Linux下的sed、awk、grep或vi,那么对正则表达式这一概念肯定不会陌生。由于它可以极大地简化处理字符串时的复杂度,因此现在已经在许多Linux实用工具中得到了应用。千万不要以为正则表达式只是Perl、Python、Bash等脚本语言的专利,作为C语言程序员,用户同样可以在自己的程序中运用正则表达式。 标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程原创 2009-09-27 19:30:00 · 1022 阅读 · 0 评论 -
shell脚本学习-9(ln命令学习)
[正文开始]ln是一个很神奇的命令,它可以创建一个文件的影子,也可以通过一个通道进入另一个地方。:)其实,所有的这些把戏都是通过软连接和硬连接实现的。我们假设你已经阅读了“硬连接和软连接的原理-《别怕Linux编程》之七”这篇文章,并且对其原理有比较透彻的认识。下面开始ln命令的情景举例吧! 1 我想建一个source.txt文件的硬链接,名字取做linksource.txt[原创 2009-09-28 17:13:00 · 10640 阅读 · 0 评论 -
shell脚本学习-11(cut命令学习)
[正文开始]1 一两句话描述一下cut命令吧!正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut是以每一行为一个处理对象的,这种机制和sed是一样的。(关于sed的入门文章将在近期发布)2 cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?cut命令主要是接受三个定位方法:第一,字节(bytes),用选项-b第二,原创 2009-09-28 17:24:00 · 3181 阅读 · 0 评论 -
进程同步与通信 归类备忘
线程的同步机制:1、 Event用事件(Event)来同步线程是最具弹性的了。一个事件有两种状态:激发状态和未激发状态。也称有信号状态和无信号状态。事件又分两种类型:手动重置事件和自动重置事件。手动重置事件被设置为激发状态后,会唤醒所有等待的线程,而且一直保持为激发状态,直到程序重新把它设置为未激发状态。自动重置事件被设置为激发状态后,会唤醒“一个”等待中的线程,然后自动恢复为未激发状态。所原创 2009-09-18 12:48:00 · 948 阅读 · 0 评论 -
shell脚本学习小结
一、用户登陆进入系统后的系统环境变量: $HOME 使用者自己的目录 $PATH 执行命令时所搜寻的目录 $TZ 时区 $MAILCHECK 每隔多少秒检查是否有新的信件 $PS1 在命令列时的提示号 $PS2 当命令尚未打完时,Shell 要求再输入时的提示号 $MANPATH man 指令的搜寻路径 二、特殊变量: $0 这个程序的执行名字 $n 这个程序的第n个参数值,n=1..9 $* 这原创 2009-09-28 19:26:00 · 1482 阅读 · 0 评论 -
Linux下PPP拨号上网设置
既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层协议的家族网络控制协议NCP.封装方案由内核驱动代码来提供.pppd(ppp daemon)提供基本的LCP,认证支持,和建立和配置IP的网络控制协议NCP.一原创 2009-09-29 01:16:00 · 3740 阅读 · 0 评论 -
KVM移植到ARM-Linux步骤
所需源代码: 1、j2sdk-1_4_2_18-linux-i586.bin,不推荐使用jdk1.5及以上版本,不能编译通过 2、j2me_cldc-1_1-fcs-src-winunix.zip包,此zip包包含KVM的源代码 3、arm-linux-gcc-2.95.3 或者 arm-linux-gcc-3.3 都能OKay原创 2009-09-24 17:40:00 · 2438 阅读 · 0 评论 -
shell脚本学习-1.5(小例子)
1.把当前文件夹下文件名含有eee的都改成大写的EEE,比如21-eee.doc就要改成21-EEE.doc。 写了个shell脚本,会sed就不难了: for filename in *eee*; do newname=`echo $filename|sed ’s/eee/EEE/g’`; mv $filename $newname;done 如果写成结构化会更清晰原创 2009-09-29 01:19:00 · 870 阅读 · 0 评论 -
Libtool创建和使用linux下动态库
文件fun.c,fun.h,hello.c,hello.h,main.c动态库函数都在fun.c和hello.c里面----------------------------fun.c:int add(int a, int b){ return a+b;}fun.h:#ifndef _FUN_H_11#define _FUN_H_11int add(int a, int b);#en原创 2009-09-25 19:35:00 · 941 阅读 · 0 评论 -
MMU解释
I. 什么是MMU,MMU的作用MMU是Memory Management Unit的缩写. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址到物理地址的转换. 提供硬件机制的内存访问授权. 现代的多用户多进程操作系统, 需要MMU, 才能达到每个用户进程都拥有自己的独立的地址空间的目标. 使用MMU, OS划分出一段地址区域, 在这块地址区域中, 每个进程看到的内容都不一原创 2009-09-25 23:18:00 · 1438 阅读 · 0 评论 -
Memo for Explanting KVM to ARM-Linux
1.First,export PLATFORM=linux 2.modify Makefile, CC=arm-linux-gcc 3.error:kvm/VmUnix/src/runtime_md.c: In function `InitializeFloatingPoint’Compiler do not support float compute Modify run原创 2009-09-24 17:48:00 · 1263 阅读 · 0 评论 -
Linux下的软链接和硬链接的不同【转】
今天编译BlueZ的时候,突然间发生了一个创建 硬链接失败 ,脑海里跳出了了一个什么是硬链接的概念,一时间还真回答不上来,google了下,发现这篇博文描述的很清晰,转载之,以备忘...链接——是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。我转载 2009-09-25 17:12:00 · 974 阅读 · 0 评论 -
Linux系统pkg-config工具的使用
一、编译和连接 一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。如果使用 -L 参数,也会造成原创 2009-09-25 19:04:00 · 931 阅读 · 0 评论 -
__attribute__ 详解
GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。__attribute__书写特征是:__attribute__前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attr转载 2009-09-25 20:44:00 · 749 阅读 · 0 评论 -
__FILE__,__LINE__等在哪儿定义的?
这些都是gcc的预定义宏(Predefined Macros),应该说这是各编程语言要求的,C++的就比C的稍微多一些。所以不论是gcc还是vc还是sun提供的cc等编译器都会有这些预定义宏的。关于gcc的,大家可以到gcc官方网站上看到:http://gcc.gnu.org/onlinedocs/cpp/Predefined- Macros.html__FILE__/__LINE__/__FUN转载 2009-09-25 20:45:00 · 1063 阅读 · 0 评论 -
shell脚本学习-5(sed命令学习)
1 你想过sed为什么叫sed么?sed是stream editor的缩写,sed就是一个流编辑器,说白了,就是我们往sed里输入一串信息,它给我们处理,然后输出来。就这么简单。sed和cut类似,是一个面向行处理的工具,它以“行”为处理单位,处理后的结果会输出到标准输出。所以说其实sed命令很安全的,它不会对行本身所在文件做任何修改的。sed的命令格式是:sed command fi原创 2009-09-28 17:05:00 · 1305 阅读 · 0 评论 -
shell脚本学习-7(sed命令学习)
例五 给某些字符串后面插入些内容[rocrocket@rocrocket programming]$ cat mysed.txtBeijingLondon[rocrocket@rocrocket programming]$ sed ’s/B.*/&2008/’ mysed.txtBeijing2008London这个命令的作用是将包含’B.*’的地方后面加上2008四个字符。这个命令里用到原创 2009-09-28 17:10:00 · 1235 阅读 · 0 评论 -
shell脚本学习-1
1、写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。 2、写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。答案:1。#!/bin/shfor filename in `find /tmp -type f -name "abc*原创 2009-09-27 23:39:00 · 1108 阅读 · 0 评论 -
解读linux对string.h函数的实现
/* file:string.h #ifndef _LINUX_STRING_H_ #define _LINUX_STRING_H_ /* We dont want strings.h stuff being user by user stuff by accident */ #ifdef __KERNEL__ #include /* for size_t原创 2009-10-15 02:50:00 · 2186 阅读 · 0 评论 -
Hash知识介绍
9.3.2 哈希函数的构造方法 什么是好的哈希函数:均匀的哈希函数 均匀的哈希函数——对于关键字集合中的任一个关键字,经哈希函数映象到地址集合中任何一个地址的概率是相等的,则称此类哈希函数是均匀的哈希函数。 常用的构造哈希函数的方法有:(1)直接定址法 (2)数字分析法 (3)平方取中法(4)折叠法 (5)除留余数法 (6)随机数法原创 2009-10-19 22:29:00 · 2369 阅读 · 1 评论 -
RAID技术简介
在计算机发展的初期,“大容量”硬盘的价格还相当高,解决数据存储安全性问题的主要方法是使用磁带机等设备进行备份,这种方法虽然可以保证数据的安全,但查阅和备份工作都相当繁琐。1987年, Patterson、Gibson和Katz这三位工程师在加州大学伯克利分校发表了题为《A Case of Redundant Array of Inexpensive Disks(廉价磁盘冗余阵列方案)》原创 2009-11-05 21:43:00 · 1264 阅读 · 0 评论 -
return (Free Software == 免费软件?1:0)
return (Free Software == 免费软件?1:0) return的是多少呢? ~前些天遇到成都天府软件园里一家公司的招聘人员对着我说 Linux是开源的、免费的。是嘛!~周立功在民主楼小礼堂大声的说“Linux是开源的,不是免费的;VxWorks 的 Linence只需一元!” GPL的全称是Gnu General Public Licen原创 2009-10-27 21:10:00 · 962 阅读 · 0 评论