
LINUX
文章平均质量分 86
科学边界
这个作者很懒,什么都没留下…
展开
-
交叉编译器arm-elf-tools的安装问题
交叉编译环境arm-elf-tools-20040427可以从http://opensrc.sec.samsung.com/download/arm-elf-tools-20040427.sh 下载得到安装方法:若直接sh arm-elf-tools-20040427.sh不能安装,则按以下步骤进行 1.#tail -n+43 arm-elf-tools-20040427.sh >>arm.ta原创 2017-03-29 10:43:48 · 2394 阅读 · 0 评论 -
C的预处理
编译过程:.c文件-预处理->.i文件-编译->.o文件-链接->bin文件包含三个方面:1.文件包含:#include 在默认文件夹查找#include“file.h” 先在当前文件夹查找,再到默认文件夹查找,“”里可以包含相对和绝对路径.h文件只包含声明,不包含定义2.宏定义:(1).宏用大写(不要写成系统函数名或者关键字),变量名和函数名用小写(2).#def原创 2017-03-29 10:44:00 · 321 阅读 · 0 评论 -
内联函数
C99引入一个新关键字inline,用于定义inline function,这种用法在内核代码中很常见。其用法总结如下:1.保证函数无副作用时使用,即无全局或静态变量。2.代码要足够短,逻辑够简单。3.系统内没有过多的内联函数。eg:inline int max(int a,int b){return a>b?a:b;}内联函数与宏的区别:1.宏展开是在预处理发生的,而inl原创 2017-03-29 10:44:10 · 836 阅读 · 0 评论 -
标准I/O操作函数
从文件编码方式看,分文本文件和二进制文件.文本文件操作:1.文件打开函数fopen():原型是FILE *fopen(const char *path,const char *mode);path --表示文件名和路径名,可以是绝对路径,也可以是相对路径。 比如:fp=fopen("/tmp/file","r+"); fp=fopen("./../原创 2017-03-29 10:44:13 · 410 阅读 · 0 评论 -
内存分配函数
内存分配包括静态分配:编译时确定内存大小,不一定在编译时分配,比如:局部变量放在栈里.动态分配:在编译时不知道内存多大,在运行时动态分配。1.malloc函数原型:void *malloc(size_t n)n是分配内存的大小,返回分配内存块的首地址,分配失败,返回NULL.内存是由OS分配的。返回类型void *是指经过强制转换可以赋值给任何类型。2.free函数原型:void free(vo原创 2017-03-29 10:44:16 · 283 阅读 · 0 评论 -
ubuntu10.04源
1.sudo cp /etc/apt/sources.list /etc/apt/source.list.bk sudo gedit /etc/apt/sources.list 编辑你的源列表,将原来的内容全部删除,添加下面列表中最适合你的源 2.sudo apt-get update 更新源列表信息 可以在运行“原创 2017-03-29 10:44:27 · 304 阅读 · 0 评论 -
vi文件配置
step1: 若没安装vim,先sudo apt-get install vimstep2: cp /etc/vim/vimrc ~/.vimrcsetp3: 编辑.vimrc,添加如下常用内容 set nocompatible set nufiletype onset history=1000set backgro原创 2017-03-29 10:44:39 · 310 阅读 · 0 评论 -
Ubuntu 10.10更新源列表
1.sudo cp /etc/apt/sources.list /etc/apt/sources.list.bk sudo gedit /etc/apt/sources.list 编辑你的源列表,将原来的内容全部删除,添加下面列表中最适合你的源(注意不要全部添加),选择一个最合适你的即可,复制到你的列表中,然后保存列表。 2.sudo apt-get原创 2017-03-29 10:44:53 · 2636 阅读 · 0 评论 -
ubuntu谷歌中文输入法
管理员在2009年8月13日编辑了该文章文章。 --> --> window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0",原创 2017-03-29 10:45:04 · 334 阅读 · 0 评论 -
ubuntu下CHM阅读器
本文旨在介绍linux下的常见chm阅读软件及其安装,并针对一些问题给出解决方法。 一、CHMSEE 这个比较常见了,呵呵。 安装: sudo apt-get install chmsee 之后在应用程序附件中就可以看到了。 问题1: 启动不了或者出现 chmsee: error while loading shared libraries: libxul.so原创 2017-03-29 10:45:09 · 6878 阅读 · 0 评论 -
ubuntu10.04搭建NFS服务
UBUNTU系统中有两种NFS服务器,一种是以内核模块的形式提供的,另一种是以用户空间程序的形式提供的,即nfs-kernel-server和nfs-user-server,安装任何一种都可以。1.安装 sudo apt-get install nfs-kernel-server安装完成后,portmapper和nfs自动启动。可以用rpcinfo -p查看是否正常启动。2.配置修改/etc/原创 2017-03-29 10:45:15 · 427 阅读 · 0 评论 -
网络五元素
1.MAC地址,网卡硬件地址,全球唯一。 2.IP地址,网络上标识主机的ID。 3.子网掩码,不能单独存在,与IP地址合用,辨别主机的网络号。 4.网关,不同网络之间的链接中转。主机访问不在同一网络内的IP,都要通过网关。 5.DNS,域名解析。简单的说,根据网址或IP可以查知另外一个。原创 2017-03-29 10:45:26 · 2357 阅读 · 0 评论 -
ubuntu是什么
ubuntu--人性,仁爱 ubuntu维基百科 管理员在2009年8月13日编辑了该文章文章。 --> --> window._bd_share_config={"common":{"bdS原创 2017-03-29 10:45:39 · 2997 阅读 · 0 评论 -
ubuntu配置静态IP地址
ubuntu静态IP配置方法: 编辑/etc/network/interfaces,并输入以下几行(假设你的网卡是eth0) sudo gedit /etc/network/interfaces auto eth0 iface eth0 inet stati原创 2017-03-29 10:45:53 · 340 阅读 · 0 评论 -
打开rar压缩文件
安装unrarsudo apt-get install unrar 使用unrar unrar e filenema 管理员在2009年8月13日编辑了该文章文章。 --> -->原创 2017-03-29 10:46:04 · 366 阅读 · 0 评论 -
Ubuntu10.04下安装minicom(转)
安装:sudo apt-get install minicom配置: 1 . 在终端中输入minicom以启动minicom;2. 先按下Ctrl + a, 放开, 再按o, 出现配置菜单.也可以用命令:(minicom -s)3. 选择 Serial port setup, 此时所示图标在“Change which setting”中,键入“A”,此时光标移到第A项对应处:串口COM1对应tty原创 2017-03-29 10:46:09 · 279 阅读 · 0 评论 -
建立交叉编译环境arm-linux-gcc
安装arm-linux-gccsudo tar xvzf arm-linux-gcc-4.4.3.tgz –C /添加环境变量,在.bashrc最后一行添加export PATH=$PATH:/opt/toolschain/4.4.3/bin 管理员在2009年8月13日编辑了该文章文章。 -->原创 2017-03-29 10:46:14 · 256 阅读 · 0 评论 -
Linux进程控制--fork()的分析
一般来说,linux下的进程包含以下几个关键要素:有一段可执行程序;有专用的系统堆栈空间;内核中有它的控制块(进程控制块),描述进程所占用的资源,这样,进程才能接受内核的调度;具有独立的存储空间#include stdio.h>#include unistd.h>#include sys/types.h>int main(void){ pid_t pid;原创 2017-03-29 10:46:26 · 412 阅读 · 0 评论 -
fork函数与vfork函数
一、fork1. 调用方法#include #include pid_t fork(void);正确返回:在父进程中返回子进程的进程号,在子进程中返回0错误返回:-1 子进程是父进程的一个拷贝。即,子进程从父进程得到了数据段和堆栈段的拷贝,这些需要分配新的内存;而对于只读的代码段,通常使用共享内存的方式访问。fork返回后,子进程和父进程都从调用fork函数的下一条语句开始执行。原创 2017-03-29 10:46:38 · 305 阅读 · 0 评论 -
Linux进程控制--exec家族
用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变#include unistd.h>int execl(const char *path, cons原创 2017-03-29 10:46:46 · 514 阅读 · 0 评论 -
Linux进程控制--wait和waitpid函数
一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊变量$?查看,因为Shell是它的父进程,当它终止时Shell调用wa原创 2017-03-29 10:46:51 · 376 阅读 · 0 评论 -
linux进程间通信
每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。进程之间传递信息的各种途径如下:1.父进程通过fork可以将打开文件的描述符传递给子进程2.原创 2017-03-29 10:46:57 · 224 阅读 · 0 评论 -
编程中改变环境变量
exec系统调用执行新程序时会把命令行参数和环境变量表传递给main函数。环境变量表是一组字符串char** environ,主要成员有PATH:可执行文件搜索路径。SHELL:当前ShellTERM:当前终端类型,在图形界面终端下它的值通常是xterm,终端类型决定了一些程序的输出显示方式,比如图形界面终端可以显示汉字,而字符终端一般不行。LANG:语原创 2017-03-29 10:47:09 · 796 阅读 · 0 评论 -
什么是Linux的信号
信号:是UNIX进程间通信的一种标准方式,在最早期的UNIX系统中已经存在。信号的出现允许内核和其它进程通知进程特定事件的发生。现代UNIX中也存在其它的进程间通信方式,但由于信号相对简单和有效,它们仍然被广泛使用。 信号是最简单的消息,当一个信号被发送时,它没有参数等附加信息,唯有一个整数来表示信号的值。信号的值在所有的UNIX系统中已经标准化了,每一个信 号都有一个名字,它以三个字母原创 2017-03-29 10:47:13 · 326 阅读 · 0 评论 -
移植linux2.6.32.2到mini2440
移植一个干净的源码,便于学习linux驱动准备工作: 1.主机--ubuntu10.042.编译工具--友善arm-linux-gcc-4.4.33.硬件--mini2440(预装友善的supervivi+kernel+root_fs,便于定位问题)移植步骤:1.获取源码#wget http://www.kernel.org/pub/linux/kernel/v2.6/li原创 2017-03-29 10:47:45 · 602 阅读 · 0 评论 -
shell 的历史
Shell(<span style="font-size:11.5pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">本身就是个程序)<span style="font-size:11.5pt;font-family:"Adobe Song St原创 2017-03-29 10:47:50 · 666 阅读 · 0 评论 -
1.交互方式使用bash
1.命令补全Tab键:自动补全文件或目录名,多按一次,具备ls功能2.历史记录Ctrl+p:向前一条一条浏览输过的命令Ctrl+n:向后一条一条浏览输过的命令Ctrl+s:输入任意字符,bash会做增量式查找,也可以反复按Ctrl-r或Ctrl-s向前后查找。若找到,按左右光标建可以把该命令带回提示符下进一步修改,或直接按Enter原封不动地执行该命令。3.主键盘快捷键 功能 快捷键原创 2017-03-29 10:48:17 · 491 阅读 · 0 评论 -
2.文件与目录操作
1.cd [dir]:dir可以是绝对或相对路径,为空的话表示当前用户家目录2.pwd3.mkdir [-opt][dir]:创建目录dir,-p表示可以连同父目录一起创建。4.rmdir [-opt][dir]:删除空目录-p表示连同空的父目录一起删除5.touch [-opt] filename:将filename所有时间更新为当前时间,若文件不存在,创建一个字节为0的文件。6.ls [-op原创 2017-03-29 10:48:22 · 333 阅读 · 0 评论 -
3.进程管理与作业控制
1.who查看当前在线上用户2.ps [-opt]用于监控后台进程的工作情况,-e 显示所有进程-f 全格式-h 不显示标题-l 长格式-w 宽输出a 显示终端上所有进程。r 只显示正在运行的进程x 显示没有控制终端的进程常用的是ps aux3.jobs 用来显示当前shell下正在运行哪些作业(后台作业)eg:$jobs[1]- Stoped cat[2]+ Stoped cat第一列数字表示作原创 2017-03-29 10:48:27 · 342 阅读 · 0 评论 -
4.磁盘及文件系统管理
1.mount软盘--mount -t vfat /dev/fb0 /mnt/floppycdrom-->mount -t iso9660 /dev/hdc /mnt/cdromSCSI cdrom--> mount -t iso0660 /dev/sdb /mnt/scdrom"-t fstype" 是可以省略的,当无法判断文件系统类型时,才必须加-t参数。只有在/etc/fstab中允许原创 2017-03-29 10:48:34 · 252 阅读 · 0 评论 -
ldd3学习之一:设备驱动简介
几个要点:1.我们应该很好地了解自己面对的具体设备(强调对硬件了解的重要性)。2.驱动程序的作用在于提供机制,而不是提供策略。(访问硬件的内核代码,不要给用户强加任何特定策略)3.不带策略的驱动包括一些典型特征:同时支持同步和异步操作,驱动程序能被多次打开,充分利用硬件特性。4.内核功能划分:进程管理:负责创建和销毁进程,并处理他们与外部的链接;进程间通信(信号,管道等)。原创 2017-03-29 10:48:39 · 317 阅读 · 0 评论 -
ldd3学习之二:构造和运行模块
1.设置测试系统:①设置一套内核源码树,比如/usr/src/linux-2.6.x,参考http://www.kernel.org/eg:uname -r --->2.6.32-27-genericwget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.27.tar.gz②直接用发行版的内核源码包,比如/lib原创 2017-03-29 10:48:44 · 364 阅读 · 0 评论 -
修改ubuntu10.10的对话框图标居右
从Ubuntu 10.04版本开始(包括现在的Ubuntu 10.10),默认将关闭 最小化 最大化的按钮从标题栏的右侧转移到了左侧,无论Ubuntu的新用户还是老用户多少有些不习惯,毕竟Windows和老版的Ubuntu都是在右侧的,那么如何改回右侧哪?本人给出了一种可行的修改方法。 具体操作如下: 现在我们看到的窗口的样子: 最大化,最小化,关闭原创 2017-03-29 10:48:56 · 458 阅读 · 0 评论 -
linux kernel API列表
1.#include #include 两个文件是模块必须添加的module_init(init_function);module_exit(exit_function);用于制定模块的初始化和清楚函数2.#include 最重要的头文件之一,包含驱动程序使用的大部分内核API的定义,包括睡眠函数以及各种变量声明。struct task_struct *current;//2.4current在2原创 2017-03-29 10:49:08 · 475 阅读 · 0 评论 -
ldd3学习之三: 字符驱动
通过介绍字符设备scull(Simple Character Utility for Loading Localities,区域装载的简单字符工具)的驱动程序编写,来学习Linux设备驱动的基本知识。scull可以为真正的设备驱动程序提供样板。1.scull设备 编写驱动程序的第一步,就是定义驱动程序为用户程序提供的能力(机制)。ldd3里用的设备是内存的一部分,可以做任何想做的事情。sc原创 2017-03-29 10:49:20 · 460 阅读 · 0 评论 -
ldd3学习之四:调试技术
内核中的调试支持内核开发者一般都已经建立了多项用于调试的功能。但是由于这些功能会造成额外的输出,并导致能下降,因此发行版厂商通常会禁止发行版内核中的调试功能。为了实现内核调试,我在内核配置上增加了几项:Kernel hacking ---> [*] Magic SysRq key [*] Kernel debugging [*] Debug原创 2017-03-29 10:49:24 · 321 阅读 · 0 评论 -
ldd3学习之五:并发与竞态
对并发的管理是操作系统编程中核心的问题之一。并发产生竞态,竞态导致对共享数据的非控制访问,会产生非预期的结果。竞态常会导致系统崩溃,数据被破坏或者产生安全问题。因为竞态是一种极端低可能性的事件,因此程序员往往会忽视竞态。但是在计算机世界中,百万分之一的事件可能没几秒就会发生,而其结果是灾难性的。1.并发及其管理 在设计自己的驱动程序时,第一个要记住的规则是:只要可能,就应该避免资源的共原创 2017-03-29 10:49:31 · 290 阅读 · 0 评论 -
makefile
make 管理员在2009年8月13日编辑了该文章文章。 --> --> window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdM原创 2017-03-29 10:49:36 · 270 阅读 · 0 评论 -
ubuntu10.04安装配置tftp服务
tftpd-hpa 是一个功能增强的TFTP服务器。它提供了很多TFTP的增强功能,它已经被移植到大多数的现代UNIX系统。1.安装sudo apt-get install tftpd-hpa tftp-hpa2.配置tftp-hpa 的配置文件為 /etc/default/tftpd-hpa sudo vi /etc/default/tftpd-hpa# /etc/default/tftpd-h原创 2017-03-29 10:49:39 · 278 阅读 · 0 评论 -
韦根协议 wiegand
一、概述:Wiegand<span style="font-family:宋体;mso-ascii-font-family:" times="" new="" roman";mso-hansi-font-family:"times="" roman""="">(韦根)协议是由摩托罗拉公司制定的一种通讯协议,它适用于涉及门禁控制系统的读卡器和卡片的许多特性;其协议并没有定义通讯的波特率、原创 2017-03-29 10:49:43 · 4060 阅读 · 0 评论