随笔分类 - LINUX/UNIX
摘要:#include<stdlib.h>#include<stdio.h>#include<string.h>intmain(intargc,char*argv[]){intnum=0;if(argc!=2){printf("usage:%sn\n",argv[0]);return0;}num=atoi(argv[1]);printf("Error#%d:%s\n",num,strerror(num));return0;}
阅读全文
摘要:/bin = BINaries/dev = DEVices/etc = ETCetera/lib = LIBrary/proc = PROCesses/sbin = Superuser BINaries/tmp = TeMPorary/usr = Unix Shared Resources/var = VARiable ?FIFO = First In, First OutGRUB = GRand Unified BootloaderIFS = Internal Field SeperatorsLILO = LInux LOaderMySQL = My是最初作者女儿的名字,SQL = Stru
阅读全文
摘要:$sudoapt-getinstallxrdp$sudo apt-get install vnc4server tightvncserver设置:系统-》首选项-》远程桌面windows下用自带的远程桌面程序连接和登录即可,十分方便
阅读全文
摘要:对每一个linux内核以及驱动开发者来说,内核自带的 Documentation目录无疑是一个非常非常有用的参考资料和学习资料。建议多读~当我们在写驱动或者修改内核的时候,可能需要用到某些kernel api,我们也想能够像libc api那样可以通过man手册查看其使用方法,毫无疑问,直接到内核 source code 里面去查找到相关的函数定义是一种方法,但是显得比较麻烦。你可以将内核api安装为man手册,然后你就可以很方便的 man xxx-kernel-api 了。具体步骤如下(based on FC6 ):在kernel source的顶层目录,执行make installmand
阅读全文
摘要:以搜索ls命令源码为例,先搜索命令所在包,命令如下:lpj@lpj-linux:~$ which ls/bin/ls用命令搜索该软件所在包,代码如下:lpj@lpj-linux:~$ dpkg -S /bin/lscoreutils: /bin/ls从上一步中可以知道ls命令的实现在包coreutils中,用apt安装(说安装有些歧义,主要是区分apt-get -d)该包的源代码然后解压,代码如下:sudo apt-get source coreutilscd coreutils-XXX #XXX表示版本号sudo tar zxvf coreutils-XXX.tar.gz脚本实现#!/bin
阅读全文
摘要:Makefile obj-m := test.oKERNELDIR := /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd)default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modulestest.c#include<linux/types.h>/*基本的类型定义*/#include<linux/fs.h>/*文件系统使用相关的头文件*/#include<linux/mm.h>#include<linux/errno.h>#include<asm/
阅读全文
摘要:由于Linux内核的级别控制,导致printk打印的内容不一定都能从控制台正常输出,可以使用dmesg命令来输出所有级别的信息。输入: sudo dmesg –n 8 可以把所有日志信息输出来Linux命令:dmesg 功能说明:显示开机信息。语 法:dmesg [-cn][-s <缓冲区大小>]补充说明:kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息亦保存在/var/log目录中,名称为dmesg的文件里。参 数:-c 显示信息後,清除ring buffer中的内容。-s<缓冲区大小> 预设置为81
阅读全文
摘要:CPU0 CPU1 CPU2 CPU3 0: 50 0 0 0 IO-APIC-edge timer 1: 26 292 3 0 IO-APIC-edge i8042 3: 37186 6956 0 18 IO-APIC-edge 6: 0 0 3 0 IO-APIC-edge floppy 7: 0 0 0 0 IO-APIC-edge parport0 8: 0 0 0 0 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi12: 58412 17304 6 0 IO-APIC-edge i804214: 0 0 0 0 IO-APIC...
阅读全文
摘要:nm命令,用于列出OBJ文件或者二进制文件中的所有符号.-c/-demangle:把符号名转换成用户理解的名字,对读取C++符号名时非常有用.-u/-undefined-only:只列出未定义符号,检查文件外部定义的符号.-l/-line-numbers:使用调试信息输出定义每个符号的行号或者复位项(如果符号未定义).-A/-o/-print-file-name:在输出每个符号名前加上文件名,这在很多库中搜索一个符号名时很有用.nm命令输出结果判断符号类型:A:符号的值是绝对的,在经后的链接中也不会改变B:符号在未初始化数据段中(BSS)D:符号在已初始化数据段中R:符号在只读数据段中T:符号
阅读全文
摘要:Linux下使用pmap命令能查看一个具体进程所用内存的分布情况每列的含义如下:参数 解释Address:进程所占的地址空间Kbytes:该虚拟段的大小RSS:设备号(主设备:次设备)Anon:设备的节点号,0表示没有节点与内存相对应Locked:是否允许swappedMode 权限:r=read,...
阅读全文
摘要:Memwatch简介在三种检测工具当中,设置最简单的算是memwatch,和dmalloc一样,它能检测未释放的内存、同一段内存被释放多次、位址存取错误及不当使用未分配之内存区域。请往http://www.linkdata.se/sourcecode.html下载最新版本的Memwatch。安装及使用memwatch很幸运地,memwatch根本是不需要安装的,因为它只是一组C程序代码,只要在你程序中加入memwatch.h,编译时加上-DMEMWATCH -DMW_STDIO及memwatch.c就能使用memwatch,例如:gcc-DMEMWATCH-DMW_STDIOtest.cmem
阅读全文
摘要:sudo dd if=/dev/sdc1 of=./sd bs=512 count=1hexdump -C ./sd00000000 eb 3c 90 4d 53 44 4f 53 35 2e 30 00 02 40 08 00 |.<.MSDOS5.0..@..|00000010 02 00 02 00 00 f8 e8 00 3f 00 ff 00 3f 00 00 00 |........?...?...|00000020 ad d9 39 00 80 00 29 4b 85 bd 74 4e 4f 20 4e 41 |..9...)K..tNO NA|00000030 4d 45
阅读全文
摘要:想要查看一些结构体的定义,比如struct ip_mreq,可以查看头文件,所有的系统预定义的结构体都在内核源代码的/include下有定义,ubuntu里面是/usr/include 。 比如要找上面提到的struct ip_mreq,可以这样:find /usr/include -name "*.h" | xargs grep "struct ip_mreq" -rn ,结果显示,这个结构体在/usr/include/netinet/in.h 的251行有定义。 其他的情况举一反三即可。
阅读全文
摘要:sudo apt-get install apt-fileapt-file updateapt-file search filename
阅读全文
摘要:默认不会生成 控制台运行 ulimit -c unlimited 就生成了,只对该控制台有效 测试代码 默认不会生成 控制台运行 ulimit -c unlimited 就生成了,只对该控制台有效 测试代码 #include <stdio.h> const char *str = "test"; v
阅读全文
摘要:Ubuntu默认将内存的一半作为ramdisk空间使用。挂载点为/dev/shm 文件类型为tmpfs /dev/shm 不完全是RamDisk,若它使用超过电脑一半以上的RAM,就会开始吃SWAP。另外它没用到的部份,会自动释放出来给系统使用 ramdisk作用可以将缓存放到其中,这样延长硬盘寿命,并且提高电脑速度 1,修改ramdisk操作 调整/dev/shm目录的大小 1)查看大小 df -h /dev/shm 2)修改大小 vi /etc/fstab tmpfs /dev/shm tmpfs defaults,size=4096M 0 0 size参数也可以...
阅读全文
摘要:Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量。系统环境变量对所有系统用户都有效,用户环境变量仅仅对当前的用户有效。修改用户环境变量用户环境变量通常被存储在下面的文件中:~/.profile~/.bash_profile或者~./bash_login~/.bashrc上述文件在Ubuntu 10.0以前版本不推荐使用。系统环境变量系统环境变量一般保存在下面的文件中:/etc/environment/etc/profile/etc/bash.bashrc/etc/profile和/etc/bash.bashrc在Ubuntu 10.0版本中不推荐使用。加入环境变量如想将
阅读全文
摘要:[1] 首先创建库文件libhello.c#include <stdio.h>#include "libhello.h"void hello(){printf("welcome to Linux!\n");}[2] 创建头文件libhello.hvoid hello();[3] 先将其编译成目标文件:gcc -c libhello.c[4] 现在我们创建libhello静态库文件:gcc -c libhello.c -o libhello.oar rcs libhello.a libhello.o [5] 写一个测试程序test.c:#inc
阅读全文
摘要:Printenv打印环境变量。Uboot> printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5Environment size: 80/8188 bytesSetenv设置新的变量Uboot> setenv myboard AT91RM9200DKUboot> printenvbaudrate=115200ipaddr=192.168.1.1ethaddr=12:34:56:78:9A:BCserverip=192.168.1.5myboard=AT91R
阅读全文
摘要:ram启动1.解压uclinux_ram.bin.gz 得 uclinux_ram.bintftp 然后 go 0xc0080002.tftp 0x0c208000 ,镜像被自动下载到RAM中的0x0c208000位置,然后执行bootm 0x0c208000 命令uclinux_rom.bin文件放在RAM的 0x0c208000 位置处,是因为uclinux_rom.bin是压缩文件 ,在用bootm启动时需要将原始文件解压缩到0x0c008000 位置(此地址在编译时就确定了),然后跳转到这里开始执行。所以必须使得uclinux_rom.bin的存放位置避开程序解压缩后的存储区域,否则二
阅读全文
浙公网安备 33010602011771号