《嵌入式Linux应用程序开发详解》

2019-07-12 20:19发布

1、分区、挂载
windows下,各盘符就是分区,各分区有自己的目录结构;
linux下,只有一个目录结构,各分区是挂载在特定的一个目录上,将分区和目录对应的过程叫做挂载,而这个挂载在文件树中的位置就是挂载点。 2、SWAP交换分区
在内存硬件资源有限的条件下,linux在硬盘上划出一个区域来当作临时的内存,而windows操作系统把这个区域叫做虚拟内存,linux 把它叫做交换分区swap,在 安装linux建立交换分区时,一般将其设定为内存大小的2倍。
在安装linux的时候,交换分区是必须建立的。 3、文件系统目录结构
/etc/rc.d该目录主要存放linux启动和关闭时要用到的脚本文件,包括/etc/rc.d/init和/etc/xinetd.d目录下的内容
/mnt该目录是软驱、光驱和硬盘的挂载点
/proc该目录是用于放置系统核心与执行程序所需要的一些信息,而这些信息是在内存中由系统产生的,故不占用硬盘空间,主要是进程信息
/sbin该目录是用来存放系统管理员的常用的系统管理程序
/tmp该目录是用来存放不同程序执行时产生的临时文件
/usr/bin和/usr/sbin系统管理员和超级用户
/usr/src内核源代码
/srv该目录存放一些服务启动之后需要提取的数据
/sys在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值,
/var服务日志信息存放在这里 4、挂载命令
mount -a将/etc/fstab文件中的分区全部挂载一遍
mount -l列出当前已经挂载的设备、文件系统名称和挂载点
mount -t vfat /dev/hda1 /mnt/c 将vfat类型的设备/dev/hda1(实际上为一块硬盘)挂载到/mnt/c下面,可以实现linux访问windows
fdisk -l 查看分区列表
5、网络命令
netstat显示网络连接、路由表和网络接口信息
nslookup查询一台机器的IP地址和其对应的域名
finger查询用户的信息
ifconfig查看和配置网络接口的参数 6、查找命令
find和locate,后者自建一个数据库,并通过crontab每天updatedb,也可以手工更新,相对find更快 7、linux启动详解
(1)第一阶段:BIOS引导。开电源、CPU从地址0XFFFFF0开始执行,也就是从Bios开始执行;Bios开机自检,并按BIOS中设置的启动设备进行启动,安装在启动设 备上的引导程序lilo或grub开始引导linux
(2)第二阶段:linux内核引导。linux主要完成磁盘引导、读取机器系数数据、实模式和保护模式切换、加载数据段寄存器以及重置中断描述符表。从 start_kernel函数开始调用一系列初始化函数。
(3)第三阶段:执行init程序,完成系统初始化工作。init程序调用rc.sysinit和rc等程序。
(4)第四阶段:init启动mingetty,打开终端供用户登陆系统,用户登陆成功后就进入了shell。 8、linux启动第三阶段,执行init程序,完成系统初始化工作
(1)确定用户登陆模式
根据/etc/inittab文件,确定用户登陆模式
(2)执行脚本/etc/rc.d/rc.sysinit,包括判断主机名,挂载文件系统,加载内核模块等等
(3)init进程就会读取这个系统运行级别设置,然后运行/etc/rc.d/rc脚本。通过这个脚本,然后进入/etc/rc.d/rcx.d(x为对应的系统运行级别),启动相应的 程序。其中/etc/rc.d/rcx.d/下的文件均为符号链接,最终绝大部分都是都是链接到/etc/rc.d/init.d下面。各个级别的服务,有的以K开头,有的以S开头,分别 表示停止和启动。
总体的脚本程序执行流程:init->inittab->rc.sysinit->rc->rcx.d->init.d
9、linux系统服务
(1)两种服务
linux的系统服务包括两种,第一种是独立运行的系统服务,很常见的服务,常住内存,开机后一直启动着,存放在rcx.d中,K开头表示kill未开启,S开头表示 Start已启动。
第二种时xinetd设定的服务,不常见的服务,xinet能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服务进程 来处理请求。可以把xinetd看作一个启动服务的管理服务器。具体配置哪个服务,需要在/etc/xinetd.d目录下新建这个服务的文件。
(2)操作服务的命令
service 服务名 start/stop/status/restart
chkconfig --list 可以看到常驻服务和xinetd启动的服务,然后可以进入/etc/xinetd.d进行查看是否一致
chkconfig --level N ntpd on 10、有用的linux命令
lsof -i:138 查看138端口被哪个程序占用了 11、交叉编译工具
可以使用已经编译好的交叉编译工具cross-3.3.2.tar.bz2,也可以自己手动制作,包括target上的bin和lib,包括gcc、g++、glibc都需要编译成符合目标板的 (ARM交叉编译链的制作)
12、GCC编译流程
(1)预处理(将头文件内容包含进来)
gcc -E hello.c -o hello.i
(2)编译(将高级语言转换成汇编语言)
gcc -S hello.i -o hello.s
(3)汇编(将汇编语言转换成二进制目标代码)
gcc -c hello.s -o hello.o
(4)链接(将显示指定的库或者默认库链接生成最终的目标程序)
gcc hello.o -o hello 13、GCC编译选项
-g:在可执行程序中包含标准调试信息
-I dir:在头文件的搜索路径列表中添加dir目录
-L dir:在库文件的搜索路径列表中添加dir目录
-lA:链接名为A的库文件
14、Makefile
(1)功能
管理整个工程,多个文件的编译;
自动编译管理器,指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量;
(2)使用方法
make 目标名;
make(以找到的第一个目标为默认目标);
(3)自动生成makefile工具autotools