自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(34)
  • 收藏
  • 关注

原创 交叉编译开源库

编译安装开源库是开发项目中经常遇见的现象。      如果所需安装的库不依赖其他的库,或者其依赖的库安装在标准目录下,编译安装时很easy的事情。      现在有一种情况,需要交叉编译一个A库,安装在非标准目录中,A库依赖B库,所以我们会先将B库交叉编译安装。然后再编译A库的时候,明确告诉B库的安装目录。这里常规做法就是在A库configure配置时,修改或者填充其设定的宏,来生成Mak

2011-11-09 10:23:20 321

转载 编译libnemesi库的pkg-config问题

开始以为 pkg-config没有装, 或者没有在 $PATH里面, 但是命令行下直接输入 pkg-config, 可以出来dorainm@coffee $ pkg-configMust specify package names on command linedorainm@coffee $    版本是 0.20的dora

2011-11-02 17:46:09 574

原创 getopt()函数

在看libnemesi源码的时候,发现getopt()这个函数,先还以为是库中的函数,但怎么也看不到原型。后来查看APUE才明白原来还有这个系统调用可以用。到现在才明白之前做了好多无用功,不过还不算晚。 #includeint getopt(int argc,char * const argv[ ],const char * optstring);extern int opti

2011-11-01 16:54:26 253

转载 内核管理进程的虚拟地址空间

当进程需要内存时,内核首先会为进程分配一段虚拟地址,即所谓的Memory Region。由于进程虚拟地址的使用情况记录在vm_area_struct中,所有的vm_area_struct都按照顺序连接在一个链表上,因此寻找某大小的虚拟地址十分简单,扫描这个链表,碰到一块大于或等于

2011-10-14 10:00:22 411

原创 如何判断两个链表是否相交

判断两个链表是否相交,首先想到的办法估计是比较结点地址,但这个方法是行不通的,因为无法知道链表的规模。于是可以想到一个方法,反转一个链表A,然后从链表B的头结点开始访问,看是否能访问到原来链表A的头结点。

2011-10-08 14:42:20 317

转载 Linux内核中ioremap映射的透彻理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:  (1)I/O映射方式(I/O-mapped)  典型地,如X86处理器

2011-09-27 15:03:58 248

转载 vld避免内存泄露的有效工具

可以在http://www.codeproject.com/tools/visualleakdetector.asp 下载到。相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及

2011-09-23 10:27:34 1433

原创 poll调用

poll函数类似于select,但与select不同的是,poll不是为每个状态(可读、可写、异常)构造一个描述符集,而是构造一个pollfd结构数组。每个数组元素指定一个描述符标号以及所关心的状态。struct pollfd {int fd;short even

2011-09-23 10:14:45 346

转载 Linux Epoll介绍

Linux Epoll介绍和程序实例 1. Epoll 是何方神圣? Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘

2011-09-22 20:47:59 288

转载 Linux检测硬盘坏道

使用SMART检测硬盘 SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及每一块硬盘(包括IDE、SCSI),在运行的时候都会将自身的若干参数记录下来,这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。硬盘运行了几千小时后,很多内在的物理参

2011-09-15 14:46:47 2211

原创 FFMpeg,SDL编译 No avaiable video device

在基于linux内核的操作系统中编译ffmpet。这种方式很简单,也很顺利。仅仅./configure   make   make install 编译好SDL执行./ffplay 时,会出现Could not initialize SDL library:

2011-09-08 18:31:06 3088 3

转载 gcc: error trying to exec 'cc1plus': execvp: 没有该文件或目录

gcc: error trying to exec 'cc1plus': execvp: 没有该文件或目录 出错的时候要注意看信息提示,你的问题是没有 cc1pluc表明你的系统缺少 g++ 包。 解决方案:$sudo apt-get install g++  (

2011-09-07 21:10:41 6626

转载 如何解决网页无法输入文字的问题

一、解决方法:(二种方法请先选第一种试试,可以了就不用第二种方法了!)(一)IE缺少mshtmled.dll文件,该文件位于系统盘windows\system32文件夹下。从一台正常的计算机拷贝此文件(或者上网下载一个)。然后进行注册,即运行命令: regsvr32 msht

2011-08-31 16:49:55 470

转载 判断两棵二叉树是否相等

在这里要对一种情况进行说明当root1的左子树与root2的左子树相同,root1的右子树与root2的右子树相同时,这两颗二叉树相同。当root1的左子树与root2的右子树相同,root1的右子树与root2的左子树相同时,这两颗二叉树同样相同。以下是实现代码

2011-08-27 20:29:27 1010

原创 建立嵌入式gdb调试环境

程序在嵌入式目标系统上运行,而gdb调试在Host端。1、下载gdb-*.tar.gz源代码  http://ftp.gnu.org/gnu/gdb/    在这里我下载的是gdb-7.1.tar.gz。2、解压安装  (1).编译arm-linux-gdb

2011-08-22 08:51:11 79

转载 复制一个复杂的链表

有一个复杂链表,其结点除了有一个m_pNext指针指向下一个结点外,还有一个m_pSibling指向链表中的任一结点或者NULL。请完成函数ComplexNode* Clone(ComplexNode* pHead),以复制一个复杂链表。链表结点的结构为:struct C

2011-08-18 17:06:14 755

原创 用递归实现反转一个链表

typedef struct ListNode{     int data;     struct ListNode *next;}List;List * reverlist(List *p,List **head){     if(p->next =

2011-08-18 11:43:48 423

转载 枚举和为m的所有子数列

void Depart(int begin,              //基准,防止重复的排列              int m,                  //被分裂的数              vectorint>& arr      //已经分裂

2011-08-18 10:14:19 278

转载 用递归的策略输出一个字符串的所有排列

#include#includestatic void ExchangeCharacters(char* str, int p1,int p2);static void RecursivePermute(char* str,int k)//递归函数

2011-08-18 09:53:26 349

转载 求两个有序数组的中位数

如果有两个有序的数组,都是已经排好序的。那么求它们的中位数应该怎样求呢。如果采用对这两个数组进行排序的方法,最快的时间复杂度也要o(nlogn)的时间。但是,如果采用中位数和顺序统学的方法来寻找,则可以在o(n)的时间内解决这个问题。       我们先寻找每个数组的中位数,

2011-08-17 21:56:02 562

转载 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url

可以估计每个文件的大小为50G×64=320G,远远大于内存限制的4G,不可能将其完全加载到内存中处理,考虑采取分而治之的方法。第一步:遍历文件a,使用Hash函数将a文件中的url分别存储到1000个小文件中,这样每个小文件的大约为300M;遍历文件b,使用相同的Has

2011-08-17 16:44:23 3106

转载 从海量日志中提取访问百度次数最多的IP

IP地址最多有2^32=4G种取值可能,所以不能完全加载到内存中。    可以考虑分而治之的策略,按照IP地址的hash(IP)%M值,将海量日志存储到M个小文件中。每个小文件最多包含4G/M个IP地址。    对于每个小文件,可以构建一个IP作为key,出现次数

2011-08-17 15:25:21 665

原创 二叉树的各种遍历算法

typedef struct TreeNode{int data;struct TreeNode *left;struct TreeNode *right;int flag;    //该标记用于后序非递归遍历}pTree; /**********

2011-08-10 20:12:56 323

原创 System 调用实质

#include int system(const char *cmdstring);因为system在其实现中调用了fork()、exec()和waitpid(),则出错有三种返回值。1、如果fork失败或者waitpid返回除EINTR之外的出错(EINTR为中断返回的错误类

2011-07-27 14:48:24 387

转载 信号实现父子进程间的同步

#include #include /*数据类型sig_atomic_t由ANSI C定义,在写时不会被中断。它意味着这种变量在具有虚存的系统上不会跨越页边界,可以用一条机器指令对其存取。这种类型的变量总是与ANSI类型修饰符volatile一并出现,防止编译器优化带来的不确定状

2011-07-27 11:04:31 439

转载 Unable to exec g++.real: No such file or directory解决方法

sudo apt-get install build-essential

2011-07-19 10:29:19 2095 3

转载 AF_INET和PF_INET在Linux下的不同

在Unix/Linux系统中,在不同的版本中AF_INET和PF_INET有微小差别.对于BSD,是AF,对于POSIX是PF. AF = Address Family PF = Protocol Family理论上建立socket时是指定协议,应该用PF_xxxx,设置地址时应该用AF_xxxx。当然AF_INET和PF_INET的值是相同的,混用也不会有太大的问题。

2011-06-18 13:50:00 1885

原创 嵌入式LINUX下 alsa库移植

<br />最近在忙于一个项目,在嵌入式开发板(CS1800)上用alsa-lib捕获摄像头音频。以下是一点心得,写出来既防止自己日后忘记,也希望能给从事这方面的同志们一点帮助。<br />一、确保设备正确安装<br />      当开发板上捕获到有摄像头的音频设备时,会在/dev目录下创建三个设备(这个可能要视情况而定,我的实验是三个设备),即pcmC0D0c、controlC0、timer。<br />二、创建目录/dev/snd,并建立相应符号链接<br />      这一步具体原因我自己也不是很

2011-05-29 11:13:00 2251

转载 主次设备号

<br />分配并注册主次设备号<br />    设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。<br />    在Linux内核看来,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务;而次设备号则用来标识具体且唯一的某个设备。<br />  

2010-10-16 15:44:00 395

转载 Tcpdump的使用

<br />来源:http://www.china-pub.com/computers/emook/0424/info.htm<br /> <br />tcpdump采用命令行方式,它的命令格式为:<br />  tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ]<br />          [ -i 网络接口 ] [ -r 文件名] [ -s snaplen ]<br />          [ -T 类型 ] [ -w 文件名 ] [表达式 ]<b

2010-09-17 10:12:00 159

原创 建立嵌入式gdb调试环境

一、关于嵌入式gdb调试的介绍     组成ARM 交叉开发环境的宿主机到目标机的调试通道一般有以下三种:      1)基于JTAG 的ICD(In-Circuit Debugger)JTAG 的ICD 也称为JTAG 仿真器,是通过ARM 芯片的JTAG 边界扫描口进行调试的设备。JTAG仿真器通过ARM 处理器的JTAG 调试接口与目标机通信,通过并口或串口、网口、USB 口与宿主机通讯。JTAG 仿真器比较便宜,连接比较方便。通过现有的JTAG 边界扫描口与 ARM CPU 核通信,

2010-09-14 16:07:00 445

转载 wget 命令

命令格式:  wget [参数列表] [目标软件、网页的网址]  -V,--version 显示软件版本号然后退出;  -h,--help显示软件帮助信息;  -e,--execute=COMMAND 执行一个 “.wgetrc”命令  -o,--output-file=FILE 将软件输出信息保存到文件;  -a,--append-output=FILE将软件输出信息追加到文件;  -d,--debug显示输出信息;  -q,--quiet 不显示输出信息;  -i,--input-fil

2010-09-14 14:57:00 227

原创 lighttpd+Hadoop+MogileFS

<br />     前几天实验室师兄都忙着找工作,听他们聊学校来了一家还不错的公司招聘,搞云计算方面的。本人对这方面几乎是一片黑,于是就查找相关资料阅读。

2010-09-14 10:07:00 62

转载 库信息提取工具 Pkg-config

<br />        如果库安装后,其头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的 不同,造成了用 -I 参数指定的头文件的路径也可能不同,其结果就是造成了编译命令界面的不统一。为了解决编译和连接界面不统一的问题,目前最为常用的库信息提取工具就是下面介绍的 pkg-config。<br /> <br /><br />使用 pkg

2010-09-13 11:06:00 448

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除