
linux系统编程
文章平均质量分 76
刘军卫
linux爱好者,主要致力于虚拟化云计算方面的研究,尤其专注于openstack,kvm,linux kernel等源码和架构的研究
微博:Marshal-Liu
展开
-
手把手教你把Vim改装成一个IDE编程环境(图文)
Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重要啊, 估计很多人就是卡在这个门槛上了, "工欲善其事, 必先利其器"嘛, 我想如果有一个很好用的IDE, 那些Linux牛人也会欢迎的. 这都是劳动人民的美好愿望罢了, 我今天教大家原创 2008-10-09 20:44:00 · 2968 阅读 · 4 评论 -
Linux内核中ioremap映射的透彻理解
<br /><br />几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:<br /><br /> (1)I/O映射方式(I/O-mapped)<br /><br /> 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和OUT指令)来访问这一空间中的地址单元。<br /转载 2010-12-20 13:23:00 · 1627 阅读 · 0 评论 -
Netlink中常用宏定义
<br /><br />在linux/netlink.h中定义了一些方便对消息进行处理的宏,这些宏包括:<br />#define NLMSG_ALIGNTO 4 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )<br /><br />宏NLMSG_ALIGN(len)用于得到不小于len且字节对齐的最小数值。<br />#define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(转载 2010-12-21 14:23:00 · 2674 阅读 · 0 评论 -
netlink使用方法
<br /><br />测试环境:2.6.28<br />Netlink在2.6内核的不同版本中发生了很大变化,具体请参考(注意其中的版本号不一定确切):<br />http://blog.youkuaiyun.com/sealyao/archive/2009/10/02/4628141.aspx<br />0. 综述<br />以下程序基本流程如下:<br />运行netlink内核模块;<br />运行用户态程序,向内核发送连接消息,通知内核自身进程id;<br />内核接收用户消息,记录其进程id;<br />内转载 2010-12-21 14:24:00 · 2195 阅读 · 0 评论 -
netlink 简单介绍
<br /><br />Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE),1-wire 子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火墙(NETLINK_FIREWALL),socket 监视(NETLINK_INET_D原创 2010-12-22 09:15:00 · 1938 阅读 · 0 评论 -
搭建嵌入式平台上的insight调试环境
<br /><br />Insight是一个Tcl/Tk编写的gdb的图形用户接口,它是由在Red hat以及Cygnus的工程师写的。Red hat大方的将其捐赠给大众使用,甚至不时的提供人力继续完善它的功能。Insight项目始于1994年,至今已经有颇为成熟,它能很好的发挥大部分gdb的强大功能。<br /> <br /> 下面是安装步骤: 1、首先下载insight 6.8-1(6.8的版本有点小问题),然后解压。解压后即使编译完之后也不要删除源文件,因为insight还要用到它。 所以我把它原创 2011-01-04 20:31:00 · 2661 阅读 · 0 评论 -
我的vim配置文件
<br />和大家分享下我的vim配置文件:<br />http://blog.chinaunix.net/space.php?uid=20940095&do=blog&id=279722原创 2011-05-03 09:21:00 · 1458 阅读 · 0 评论 -
ubuntu下evince中文乱码解决方法
网上有很多解决linux下PDF中文乱码的问题,这里总结一个最简单的解决方法。1. 安装poppler-datasudo apt-get install poppler-data2. 修改系统配置文件(/etc/fonts/conf.avail/49-sansserif.conf) sans-serif修改为: SimSun原创 2012-03-28 11:05:07 · 2350 阅读 · 0 评论 -
ubuntu 12.04 安装Intel VTune Amplifier XE 2011
1 下载Intel VTune Amplifier XE 2011 下载地址:http://software.intel.com/en-us/articles/non-commercial-software-download/ 点击靠近页面下部的:Intel VTune Amplifier XE 2011 for Linux 然后进行注册,注册之后,会原创 2012-06-22 22:07:29 · 5488 阅读 · 0 评论 -
linux-2.6.32 编译问题(ld: /ubuntu/omnibook/sections.lds: No such file: No such file or directory )
<br />解决方法:<br />在/usr/src/linux-source-2.6.32/ubuntu/omnibook/Makefile 中<br />ifeq ($(KERNELRELEASE),)<br /> # Support for direct Makefile invocation的前面增加:PWD=$(shell pwd)<br /><br />原创 2010-07-04 20:31:00 · 2481 阅读 · 0 评论 -
Posix线程编程指南(1)
线程创建 1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,转载 2010-03-26 13:42:00 · 1255 阅读 · 0 评论 -
Linux下命令行程序设计--getopt_long()函数使用说明
1.Linux Command-line Conventions(Linux命令行约定) 几乎所有的GNU/Linux程序都遵循一些命令行参数定义的约定。程序希望出现的参数可以分成两种:选项(options or flags)、其他类型的的参数。Options修饰了程序运行的方式,其他类型的参数则提供了输入(例如,输入文原创 2009-11-29 22:08:00 · 1620 阅读 · 0 评论 -
用crosstool-ng建立arm-linux 4.3.2 交叉工具链
crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者.使用crosstool最多只能编译gcc 4.1.1 glibc 2.x的版本.而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本 glibc 2.9版本...在使用低于4.1.1的版本编译2.6.29 kernel时,会出现incl原创 2009-11-29 22:10:00 · 5320 阅读 · 0 评论 -
error while loading shared libraries: libgnutls.so
error while loading shared libraries: libgnutls.so.13 解决方法在安装一些软件或执行某些命令时,如qemu-system-ppc等时,可能会出现/usr/local/bin/liferea-bin: error while loading shared libraries: libgnutls.so.13: cann原创 2009-11-29 22:12:00 · 2823 阅读 · 0 评论 -
ubuntu bochs 编译安装
bochs-2.4.1下载地址:http://sourceforge.net/projects/bochs/files/bochs/2.4.1/安装bochs-2.4.1前要安装 libgtk2.0-dev和xorg-dev sudo apt-get install libgtk2.0-dev xorg-dev解压bochs-2.4.1之后,把/bochs-2原创 2009-11-29 22:10:00 · 1646 阅读 · 0 评论 -
linux 多线程编程 ---- 信号量的使用
信号是E.W.Dijkstra在二十世纪六十年代末设计的一种编程架构。Dijkstra的模型与铁路操作有关:假设某段铁路是单线的,因此一次只允许一列火车通过。信号将用于同步通过该轨道的火车。火车在进入单一轨道之前必须等待信号灯变为允许通行的状态。火车进入轨道后,会改变信号状态,防止其他火车进入该轨道。火车离开这段轨道时,必须再次更改信号的状态,以便允许其他火车进入轨道。在计算机版本中,信原创 2009-12-06 19:12:00 · 2430 阅读 · 0 评论 -
由signal谈起--typedef 指向函数的指针
在学习《unix环境高级编程》信号的时候,我们会遇到一个比较复杂的函数,signal函数:void (*signal(int signo,void (*func)(int)))(int)单纯看这个函数还是比较容易理解的,即函数名,*signal(int signo,void (*func)(int))书中采用typedef来简化了函数的定义,typedef void Sigfunc(int原创 2009-12-06 10:59:00 · 1357 阅读 · 0 评论 -
深入了解MSB和LSB
Most Significant Bit, Last(Least) Significant Bit最高有效位(MSB) 指二进制中最高值的比特。在16比特的数字音频中,其第1个比特便对16bit的字的数值有最大的影响。例如,在十进制的15,389这一数字中,相当于万数那1行(1)的数字便对数值的影响最大。比较与之相反的“最低有效位”(LSB)。MSB高位前导,LSB低位前导原创 2010-03-24 17:28:00 · 11729 阅读 · 2 评论 -
Posix线程编程指南(2)
概念及作用在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据。在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操作,最简单的办法就是使用同名而不同变量地址的线程相关数据结构。这样的数据结构可转载 2010-03-26 13:43:00 · 1084 阅读 · 0 评论 -
linux内核initrd文件自定义方法
重新编译内核后,可能加入了自定义的模块,就有可能需要修改init文件,而init文件就在initrd中,这里记录下操作步骤,以防遗忘。1. cp /boot/initrd-3.2.img /tmp/mylinux/initrd-3.2.img.gz 这里之所以进行改名,是因为initrd-3.2.img是经过gzip压缩过的,所以需要对其解压,但原创 2012-07-12 18:09:05 · 3824 阅读 · 0 评论