




已阅读5页,还剩89页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式Linux种类 是否支持MMU不支持MMU ucLinux 主要应用在ARM7系列微处理系统中 如三星公司的S3C44B0 S3C4510等 无MMU 不支持虚拟地址 直接访问内存 所有程序中访问的地址都是物理地址 支持MMU 嵌入式Linux 主要应用在ARM9系列微处理器系统中 如三星公司的S3C2410 Intel公司的PXA255等 Linux主要目录介绍 与Windows一样 在Linux中也是通过目录来组织文件的 但不同的是 在Linux下只有一个根目录 而不象Windows那样一个分区一个根目录 Linux下常用的命令 工具 系统启动时要用到的程序 系统内核 引导配置文件等 Linux就是从这里启动的 所有的设备文件 但不是具体的驱动程序 而是一个访问这些外部设备的端口 系统管理时要用到的各种配置文件和子目录 用户主目录 用户独立的空间 非标准目录 内空 但决不能删 系统管理员的系统管理程序 一个虚拟的文件系统 可用来访问到内存里的内容 包含许多被 bin 和 sbin 中的程序使用的库文件 大多数情况下是空的 用来保存异常时候的丢失文件 超级用户 管理员 的专用目录 外部设备的挂接点 通常用cdrom与floppy两个子目录 通常用来安装各种软件的地方 usr src usr bin 系统运行时的各种临时文件 内核代码结构 Linux的源代码一般在 usr src Linux 代表内核版本 如2 4 20 代码分布如下 arch 包含所有硬件结构特定的内核代码 如i386 ARM等 drivers 包含内核中所有的设备驱动程序 如USB 串口等 fs 包含所有的文件系统代码 如jffs2 ext2 ntfs等 include 包含建立内核代码时所需的大部分库文件 如asm arm是arm平台所需的库文件 init 包含内核的初始化代码 内核从此处工作 ipc 包含了核心进程间的通讯代码 kernel 包含了内核管理的核心代码 mm 包含了所有的内存管理代码 net 包含了核心的网络部分代码 如 ipv4 ipv6等 Documentation 保存着详细的说明文档 Scripts 主要在配置内核时用到 存放了配置内核的一些脚本文件 比如makemenuconfig命令等 1 普通文件 系统文件 conf lock rpm 编程和脚本文件 c cpp h o pl py so sh格式文件 au gif html jpg pdf 压缩以及归档文件 bz2 gz tar tbz tgz zip Linux下的文件类型 2 目录文件 目录中包含文件以及下级子目录 但目录也是文件 这个文件中记录了包含在其中的文件和子目录的名称与其所处的地址 目录文件中记录文件的名字 文件本身的记录不包含文件名 对文件名进行的更改 实际是修改目录文件中的一条文件记录 3 连接文件 连接是Linux中比较特殊而非常有用的一种文件 类似于Windows中的快捷方式 它本身不包含任何内容 它指向别的文件或目录 Linux下所有的设备都是通过文件来表示的 所有的设备文件都存放在 dev目录下 设备文件的文件名就是设备名 设备文件的种类 块设备文件 dev hda1 这些设备以块为最小单位 字符设备 dev ttyS0 字符设备按顺序一个一个传递字符 4 设备文件 Shell简介 shell是用户与Linux内核之间的接口程序 是一个命令解释器 拥有内建的shell命令可以用来启动 挂起 停止甚至编写程序 shell是Linux操作系统的一个整体组成部分 也是Linux操作系统设计的一部分 如果把Linux操作系统的内核想象成一个球体的中心 那么shell就是包围内核的外层 从shell或其他程序向Linux操作系统传递命令的时候 内核就会做出相应的反应 shell与内核之间的关系 在命令行中输入的每一个命令都是由shell先解释 然后再传给内核 Linux下打开终端就可以看到Shell提示符 作为Linux默认的Bash 对于普通用户用 作为Shell提示符而对根用户 root 用 作为Shell提示符 二 常用Linux命令 Shell命令的一般格式 命令名 选项 参数1 参数2 选项 是包括一个或多个字母的代码 它前面有一个减号 Linux用它来区别选项和参数 多个选项可以用一个减号 连起来 例如 ls l a 与 ls la 相同 参数 提供命令行运行的信息 或者是命令执行过程中所使用的文件名 使用分号 可以将两个命令隔开 便于一行中输入多个命令 例如 ls l home zxq 命令会将 home zxq目录的内容详细列出 一 获取帮助信息命令1 man权限 所有用户使用方法 man 查找内容 说明 获取帮助信息 用于快速查询命令和程序的使用方法等 例如 zxt BChome man ls 2 help权限 所有用户使用方法 命令 help说明 显示出需要查找帮助命令的帮助信息 根据命令不同可能采用不同的参数 help或 help例如 zxt BChome man help或 zxt BChome man help 1 ls 权限 所有用户 使用方法 ls 选项 文件 说明 列出当前工作子目录 默认 中的文件及子目录清单 常用选项 a显示所有文件及目录 包括隐藏文件 l显示文件的详细信息 h和其它参数配合使用 t将文件按建立的先后次序列出 可与其它参数配合使用 F在列出的文件名称后加一个符号 可执行文件 目录 例如 zxt BChome ls lh 二 浏览目录常用命令 2 cd命令 权限 所有用户 使用方法 cd 目标路径 说明 变换工作目录到目标路径 其中目标路径可以是绝对路径也可以是相对路径 目标路径名可以缺省 若缺省则变换至使用者的homedirectory 用户登录子目录 常用参数 cddir切换到当前目录下的dir目录cd 切换到根目录cd 切换到到上一级目录cd 切换到上二级目录cd 切换到用户目录 比如是root用户 则切换到 root下例如 zxt BChome cd home zxt up netarm2410 zxt BChome cd 3 pwd命令权限 所有用户使用方法 pwd说明 显示用户当前工作子目录的完整路径应用示例 zxt BChome pwd则出现 home 4 dir命令 权限 所有用户 使用方法 dir 路径 文件名 说明 功能于ls命令类似 列出当前工作子目录 默认 中的文件及子目录清单 三 常用阅读命令 1 cat命令权限 所有用户使用方法 cat 选项 文件名 说明 可以显示文件内容 或者把文件串接后输出到基本输出 或另一个文件 常用选项 n 由第1行开始对所有输出行数编号 b 与 n类似 只是不对空白行编号 应用示例 zxt BChome cat ntextfile1 textfile2 zxt BChome cattext1text2 text3 2 more命令 权限 所有用户 使用方法 more 选项 文件名 说明 类似cat 但它可以分页显示 适合显示长文件清单或文本内容 最基本的指令就是按空格换页 按回车进下一行 按b键返回上一页 常用选项 num 一次显示的行数 d 在屏幕最下方显示提示信息 num 从第num行开始显示应用示例 zxt BChome moretextfile 3 less命令权限 所有用户使用方法 less 参数 文件名 说明 与more命令功能类似 可以用来浏览文字文件的内容 less允许往回卷动已浏览过的部分 在打开文件时 比一般的文本编辑器 vi 快 应用示例 zxt BChome lesstextfile 四 常用查找命令 1 find命令 权限 所有用户 使用方法 find 路径 参数 查找相关内容 说明 对某个特定文件 某些特定文件和某种类型的文件进行检索 可以根据名字 类型 文件属主以及上次修改时间来检索常用参数 name 检索文件名中包含查找内容字符串的文件 type 检索相应类型的文件 d c等 user 检索创建用户为查找内容的文件 应用示例 zxt BChome find etc typec zxt BChome find etc nameex 2 grep 在文件中搜索匹配行并输出 五 常用目录操作命令 1 mkdir命令权限 所有用户使用方法 mkdir 子目录或子目录完整路径 说明 建立一个新的子目录 使用子目录的路径作为参数 p选项 命令将会自动建立不存在的中间目录 2 rmdir命令权限 当前目录有适当权限的所有者使用方法 rmdir 参数 子目录或子目录完整路径 说明 删除空的目录应用示例 zxt BChome rmdir home zxt temp 六 常用文件操作命令 1 rm命令权限 当前文件有适当权限的所有者使用方法 rm 参数 文件名或目录 说明 删除文件以及目录 常用参数 i 删除前逐一询问确定 f 即使原文件为只读也强制删除 并不询问确定 r 同时删除该目录层下的所有目录以及文件应用示例 zxt BChome rm itextfile zxt BChome rm rf home zxt temp第一个会询问是否删除 按 y 将会删除 按 n 将不会删除 第二个将不会提示 直接删除 2 mv命令 权限 当前文件有适当权限的所有者 使用方法 mv 参数 原文件或目录 目标文件或目录 说明 将一个文件移至另一个文件 或将多个文件移动至另一个目录 也可以将一个目录移动至另一个目录 常用参数 i 若目的位置已有同名文件 则询问是否覆盖旧文件 应用示例 zxt BChome mvtext1text2 zxt BChome mv i c home zxt temp 3 cp命令 权限 所有用户 使用方法 cp 参数 原文件或目录 目标文件或目录 说明 将一个文件复制到另一个文件 或将数个文件复制到另一个目录中 也可以将一个目录复制到另一个目录 常用参数 a 尽可能将文件的状态 权限等信息全部复制 f 若目的地址有同名文件 则将已有的文件删除再进行复制 r 若原目录中包含子目录 则原目录中的文件及子目录也依次复制到目的地址中 应用示例 zxt BChome cptext1text2 zxt BChome cp arfup tech temp 4 ln 在文件间建立连接ln options 源文件 目标文件 目录 若进行软连接 加选项 S 硬连接直接使用 不加选项 5 chmod 改变文件或目录的许可权限chmod options 文件名 u代表用户自己 即文件的所有者g代表本人所在的组 组成员o系统中其他的用户a所有用户 增加权限 减少权限 使存储权限等于r读权限w写权限x执行权限 6 touch 改变文件的时间参数 Linux的软件一般是以 gz或 tar或者 tar gz结尾的 gz是由gzip程序压缩的 tar gz是先用tar程序打包 再用gzip程序压缩而成的 注意 打包和压缩是不同的概念1 以 gz结尾的为压缩文件 用命令 gzip dfilename来解压 得到的文件在当前目录中 不保留 gz文件 2 以 tar结尾的为归档 打包 文件 用命令 tar xvffilename来展开 生成的文件与源文件在同一目录中 只是少了 tar 3 以 tar gz结尾的文件最常见 可直接用命令 gzip cdfilename或tarxfvfilename来解开 七 压缩及解压缩命令 1 tar命令 权限 所有用户 使用方法 tar 参数 f 归档文件名 原文件或目录 说明 广泛用于建立归档文档 这个命令将文件及目录复制到归档文件中 原文件并不会有被删除的危险 同时还可通过参数调用相应的压缩工具进行压缩及解压缩 常用参数 f 此参数是必须的 通常用来指定包的文件名 r增加文件到已经有的包 文档 例如 tar rftest tar jpg t 列出包的文件所有内容 查看已经备份了哪些文件 例如 tar tftest tar 常用参数 c 创建新的档案文件 即打包功能如果用户想备份一个目录或一些文件 就要选择这个选项例如 tar cftest tar home tmp x 解压缩 从文件中恢复所有文件 事实上是一个解包的过程例如 tar xftest tar z 使用gzip或ungzip j 使用bzip 应用示例 zxt BChome tarcjftemp tar bz2 temp 将 temp打包为temp tar bz2 zxt BChome tarxjftemp tar bz2 解压缩temp tar bz2 如果对linux 2 4 x tgz这个文件解压 可以用tarxzflinux 2 4 x tgz 如果把一个目录linux 2 4 x压缩成一个文件linux 2 4 x tgz 可以用下面命令 tarczflinux 2 4 x tgzlinux 2 4 x解压缩bz2格式压缩包tar xjflinux bz2建立bz2格式压缩包tar cjflinux 2 4 x tar bz2 develop linux 2 4 x tar 打包备份文件 gzip 压缩文件gzip options 文件名 gunzip 解压缩文件gunzip options 文件名 八 挂载文件系统命令 1 mount命令 权限 所有用户 使用方法 mount 参数 设备 挂载目录 挂载点 说明 在命令行中使用mount命令挂载文件系统2 umount命令权限 所有用户 使用方法 umount 参数 设备 挂载目录 挂载点 说明 在命令行中使用umount命令卸载文件系统例如 umount dev hda1将 dev hda1设备卸载 设备必须处于空闲状态 常用参数 t 指定挂载文件系统类型 应用文件类型 adfs affs autofs coda coherent cramfs devpts efs ext ext2 ext3 hfs hpfs iso9660 jfs minix msdos ncpfs nfs ntfs proc qnx4 ramfs reiserfs romfs smbfs sysv tmpfs udf ufs umsdos vfat xenix xfs xiafs 例如1 root localhostroot mount tnfs192 168 0 43 home mxl mnt nfs 将nfs服务的共享目录 home mxl加载到 mnt nfs目录mount tiso9660 dev cdrom mnt cdrom将光驱加载到 mnt cdrom目录 iso9660是标准的CDROM文件系统 例如2 ifconfigeth0192 168 0 102 九 常用网络命令 ifconfig命令权限 所有用户使用方法 ifconfig 接口 ifconfig 接口 参数 或 地址 说明 用来配置网络接口应用示例 十 常用快捷键 1 TAB文件目录匹配搜索的使用例如 arm2410 假设 目录下没有其它以a字符开头的其它目录和文件 则要进入这个目录 只需敲入 cd a然后按下TAB键 则SHELL会自动匹配找到 arm2410目录 这样就不必完全键入剩余的字符 这个功能在访问名字很长的文件和目录时非常有效 可以大大提供键盘输入的速度 极为方便 2 光标键 如果在以前输入某个命令 下次想要再次输入此命令 则只要按上光标键就可以找到 光标键 向下查找使用过的命令 十一 其他常用命令 1 clear命令 清屏命令 清除屏幕上的内容 2 init0命令 关闭虚拟机命令 可以防止直接关闭虚拟机电源导致数据崩溃 3 reboot命令 重新启动虚拟机 4 insmod命令 向内核添加模块 如驱动模块 5 rmmod 删除驱动模块 6 startx 进入linux的X WINDOWS图形界面7 中断Shell命令 Ctrl z8 添加用户命令 adduser9 删除用户命令 userdel 1 程序编辑器vi P41 Vi编辑器最初是由SunMicrosystems公司的BillJoy在1976年开发的 一开始BillJoy了Ex编辑器 行编辑器 后来开发了Vi作为Ex的visualinterface 也就是允许一次能看到一屏的文本而非一行 Vi因此而得名 1 1Vi简介 初步接触vi 可能会觉得它的界面不太友好 没有菜单 只有命令 不容易掌握 可一旦掌握了vi的命令 就会感觉到它强大的功能与高效 而且vi相对来说较小 无论使用任何Linux系统 总是可以使用vi root localhostroot vi 进入Vi界面 先编辑源代码 再命名文件 root localhostroot vifile 编辑文件名为file的源代码 1 2vi用法 1 指令模式 用户在用Vi时 最初进入的为一般模式 在该模式中可以通过上下移动光标进行删除字符或整行删除等操作 也可以进行复制 粘贴等操作 但无法编辑文字 2 文本输入模式 只有在该模式下 用户才能进行文字编辑输入 用户可按Esc键回到命令行模式 在指令模式下按a A键 i I键或o O 就可以插入文字等 3 末行模式 在该模式下 光标位于屏幕的底行 用户可以进行文件保存或退出操作 也可以设置编辑环境 如寻找字符串 列出行号等操作 vi三种模式及其功能 三种模式的相互切换当进入vi时 首先进入指令模式 按i或a等键就进入文本输入模式 用户输入的可视字符都可以添加到文件中 显示在屏幕上 按ESC就可以回到指令模式 在指令模式输入 就进入末行模式 在指令模式下都是要输入命令 但命令不要以 开始 否则就进入了最后行模式 它直接接受键盘输入的单字符或组合字符命令 例如直接按下u就表示取消上一次对文件的修改 相当于WINDOWS下的Undo操作 指令模式下怎样使用Vi 0光标移至行首h光标左移一格l光标右移一格j光标向上移一格k光标向下移一格 A光标移至该行最后PageDn向上滚动一页PageUp向下滚动一页d 方向键删除文字dd删除整行pp整行复制r修改光标所在字符 指令模式下常用命令及其含义 x 删除光标处字符 Character nx 删除光标处后n个字符nX 删除光标处前n个字符ndw 删除光标处下n个单词 word S 删除光标所在的列 并进入输入模式d 或D 删除由光标所在处至该行最末的字符u 恢复前一次所做的删除 要检索文件 必需在指令模式下进行 str 向后搜寻str直至文件结尾处 str 往前搜寻str直至文件开首处n 同一方向上重复检索N 相反方向上重复检索vi围绕整个文件 不断检索 直至找到与模式相匹配的下一个出现 末行模式下常用命令及其含义 在最后行模式下 所有命令都要以 开始 所键入的字符系统均作命令来处理 如 q 代表退出 wq表示存盘推出 q 放弃任何改动而退出vi 强行退出 w文件存盘 x存盘并退出vi w 对于只读文件强行存档 wq存档并退出vi setnu在文件中的每行前面会列出行号 setnonu取消列出的行号 s string1 string2 g全程替换命令 在整个文件中替换 string1 成 string2 i 在光标处插入正文I 在一行开始处插入正文a 在光标后追加正文A 在行尾追加正文o 在光标下面新开一行O 在光标上面新开一行Ctrl f 向后翻页Ctrl b 向前翻页Esc 返回命令行模式 文本输入模式常用命令及其含义 2 程序编译器gcc gcc是GNU的编译器组件之一 它是Linux中最重要的软件开发工具 现在的gcc能够编译很多种语言 如 CC ObjectC C语言的一种面向对象扩展 JavaPascal等 2 1gcc简介 2 编译器 GCC GCC GNUCCompiler 是GNU推出的功能强大 性能优越的多平台编译器 GCC编译器能将C C 语言源程序 汇编源化序和目标程序编译 链接成可执行文件 以下是GCC支持编译的一些源文件的后缀及其解释 以 c为后缀的文件是C语言源代码文件 以 a为后缀的文件是由目标文件构成的档案库文件 以 C cc或 cxx为后缀的文件是C 源代码文件 以 h为后缀的文件是程序所包含的头文件 以 i为后缀的文件是已经预处理过的C源代码文件 以 ii为后缀的文件是已经预处理过的C 源代码文件 以 m为后缀的文件是Objective C源代码文件 以 o为后缀的文件是编译后的目标文件 以 s为后缀的文件是汇编语言源代码文件 以 S为后缀的文件是经过预编译的汇编语言源代码文件 gcc编译器可被成功地移植到不同的处理器平台上 标准PCLINUX上的gcc是FORINTELCPU的 而ARM系列开发套件使用的是FORarm系列处理器的gcc编译器arm elf gcc或arm linux gcc等 GCC的特点 1 支持几乎所有的主流CPU处理器平台 2 可以完成从C C 等源文件向运行在特定CPU硬件上的目标代码的转换 3 功能强大 结构灵活 可移植性强 4 支持的源程序格式见P51表3 6 gcc编译器编译程序生成可执行文件需要经过以下几个过程 预处理 编译 汇编 链接 预处理 将源代码中指定的头文件包含进来等 用cpp 编译 将源代码翻译成汇编代码 用ccl 汇编 生成扩展名为 o的目标文件 用as 链接 将所有扩展名为 o的目标文件链接生成可执行文件 用ld ansi只支持ANSI标准的C语法 这一选项将禁止GNUC的某些特色 支持符合ANSI标准的C程序 这样就会关闭GNUC中某些不兼容ANSIC的特性 例如inline和typeof关键字等 c只编译并生成目标文件 不作链接 例如 gcc ctest c test o S只编译并生成汇编语言文件 s 例如 gcc Stest c test s e只运行C预编译器 对文件进行预处理 v查询正在使用的gcc版本及与gcc版本相关的信息 2 2gcc的常用命令选项 gcc最基本的用法是 gcc options file 其中的option是以 开始的各种选项 file是相关的文件名 在使用gcc的时候 必须要给出必要的选项和文件名 选项说明 g生成调试信息 GNU调试器可利用该信息 o生成指定的输出文件 用在生成可执行文件时 例如 gcc otesttest c I指定库或头文件路径DIRECTORY 一般LINUX下的函数将头文件放在 usr include 目录下 库文件放在 usr lib 目录下 但是有些情况下则不是这样 因此需要指定路径 例如 gcc I home include otesttest c L指定额外的函数库搜索路径DIRECTORY 如果使用了不在标准位置的库 可以通过该命令向GCC的库文件搜索路径中添加新的目录 例如 一个程序要用库libapp so在 home zxq lib 目录下 为了让GCC能顺利链接该库 用下面命令 gcc Test c L home zxq lib lapp oTest static指定静态连接库 缺省是动态连接 动态链接库 和静态函数库不同 它里面的函数并不是执行程序本身的一部分 而是根据执行程序需要按需装入 同时其执行代码可在多个执行程序间共享 节省了空间 提高了效率 具备很高的灵活性 在 lib目录下 就有许多以 so作后缀的文件 这就是LINUX系统应用的动态链接库 只不过与WINDOWS叫法不同 它叫so 即SharedObject 共享对象 在LINUX下 静态函数库是以 a作后缀的 用vi编辑一个简单的程序 hello c includeintmain printf Helloworld Linuxprogramming n return0 然后执行下面的命令编译和运行这段程序 gcc ohellohello c hellogcc编译器就会生成一个hello的可执行文件 在hello c的当前目录下执行 hello就可以看到程序的输出结果在屏幕上 Helloworld Linuxprogramming 应用举例 3 程序调试器gdb 3 1gdb简介 所有的程序在写好以后 都要经过调试 在调试过程中发现并改正程序中的错误 gdb是一个用来调试c或c 程序的功能强大的调试器 它能在程序运行时观察程序的内部结构和内存的使用情况等 如果没有gdb 程序员为了跟踪某些错误 就要在程序中加入大量的语句 用来产生一些特定的输出 对于某些程序来说 这样做会导致更多的错误 gdb也是Linux系统上缺省使用的调试器 gdb已经被移植到许多计算机平台上 能够用来对嵌入式系统进行调试 如 ARM系列处理器的gdb编译器arm elf gdb或arm linux gdb等 较新版本 GDB6 8 2008 4发布 官方网址 http www gnu org software gdb Gdb功能非常强大 可监视程序中变量的值 可设置断点以使程序在指定的代码行上停止执行 支持单步执行等 注意 GDB调试的是可执行文件 在shell命令行上 提示符 后 键入gdb并按回车键就可以运行gdb了 如果一切正常的话 gdb将被启动并且你将在屏幕上看到如下的内容 gdbfilenameGNUgdbRedHatLinux7 x 5 0rh 15 MI OUT 292Copyright2001FreeSoftwareFoundation Inc GDBisfreesoftware coveredbytheGNUGeneralPublicLicense andyouarewelcometochangeitand ordistributecopiesofitundercertainconditions Type showcopying toseetheconditions ThereisabsolutelynowarrantyforGDB Type showwarranty fordetails ThisGDBwasconfiguredas i386 redhat linux gdb 调试服务开始 gdb命令的语法如下 gdb 参数 filename 参数 举例 gdb qfilename屏蔽gdb系统的信息提示 gdb help得到一个有关这些参数选项的简单说明列表 3 2gdb的常用调试命令 p58 1 break在指定的行上设置断点 break52 list显示源程序 3 clear删除设置在特定源文件 特定行上的断点 其用法为 clear54 continue继续执行正在调试的程序 该命令用在程序由于处理信号或断点而导致停止运行时 5 displayexpress每次程序停止后显示表达式的值 表达式由程序定义的变量组成 6 fileFILE装载指定的可执行文件进行调试 7 helpNAME显示指定命令的帮助信息 8 infobreak显示当前断点清单 包括到达断点处的次数等 9 infofiles显示被调试文件的详细信息 10 infofunc显示所有的函数名称 11 infolocal显示函数中的局部变量信息 12 quit q 退出GDB调试 13 set设置变量值 如setn 3 14 run运行可执行程序 gdb使用方法举例 include stdio h include math h intmain void floatpi 3 1415926 floatR floatS 0 printf PleaseinputyourRidus n scanf f A 利用Vi编辑器写源程序 test c B 编译程序 gcc g otesttest c C 调试程序 1 gdb qtest 2 查看源代码 gdb list 1 include stdio h 2 include math h 3intmain void 4 5floatpi 3 1415926 6floatR floatS 0 3 运行程序 gdb run根据输入值得到运行结果 4 设置断点 gdb breaknum 如break7 显示断点行 gdb run程序运行至断点行 此时可以使用查看变量值 gdb printex查看变量类型 gdb whatisex 单步执行 gdb step等调试程序命令来调试程序 5 结束调试程序 gdb kill GDB交叉调试方法 结合实验讲解 通过串口控制台minicom 进入目标机系统 minicom将进入目标板 通过mount tnfs 命令挂载要调试的程序 然后使用 gdbserver192 168 0 100 2345hello192 168 0 100为宿主机IP 在目标系统的2345端口开启了一个调试进程 hello为要调试的程序 出现提示 Process tmp hellocreated pid 80Listeningonport2345 打开另一个终端即宿主机下 cd exportPATH PATH usr local arm gdb bin armv41 linux gdbhello gdb targetremote192 168 0 223 2345 192 168 0 223为目标机IP 出现提示 Remotedebuggingusing192 168 0 223 2345 Newthread80 Switchingtothread80 0 x40002a90in 同时在目标机下提示 Remotedebuggingfromhost192 168 0 100 gdb 连接成功 这时候就可以输入各种gdb命令如list run next step break等进行程序调试了 5Make与Makefile 或许很多Winodws的程序员都不知道这个东西 因为那些Windows的IDE 集成开发环境 做了这个工作 要想成为一个好的程序员 要懂Makefile 特别在linux下的软件编译 就不能不自己写makefile了 会不会写Makefile 从一个侧面说明了一个人是否具备完成大型软件工程的能力 Makefile关系到了整个工程的编译规则 一个工程中的源文件不计数 其按类型 功能 模块分别放在若干个文件中 Makefile定义了一系列的规则来指定 哪些文件需要先编译 哪些文件需要后编译 哪些文件需要重新编译 甚至于进行更复杂的功能操作 Makefile带来的好处就是 自动化编译 一旦写好Makefile 只需要一个make命令 整个工程完全自动编译 极大地提高了软件开发的效率 make是一个命令工具 是一个解释Makefile中指令的命令工具 一般来说 大多数的IDE都有这个命令 比如 Delphi的make VisualC 的nmake 以及Linux下GNU的make make命令执行时 需要一个Makefile文件 以告诉make命令怎么去编译和链接程序 一般来说 最简单的就是直接在命令行下输入make命令 make命令会找当前目录的Makefile来执行 一切都是自动的 GNU的make工作时的执行步骤如下 1 读入所有的Makefile 2 读入被include的其他Makefile 3 初始化文件中的变量 4 推导隐含规则 并分析所有规则 5 为所有的目标文件创建依赖关系链 6 根据依赖关系 决定哪些目标要重新生成 7 执行生成命令 1 5步为第一个阶段 6 7步为第二个阶段 第一个阶段中 如果定义的变量被使用了 那么 make会把其展开在使用的位置 但make并不会完全马上展开 make使用的是拖延战术 如果变量出现在依赖关系的规则中 那么仅当这条依赖关系被决定要使用了 变量才会在其内部展开 1 什么是make Makefile是由规则来组成的 每一条规则都有三部分组成 目标 target 可以是可执行文件 O文件 伪目标 依赖 dependency 可以是另一条规则的目标 也可以是文件 通常由生成目标所需要的源文件或 O文件组成 多个依赖文件之间用空格分开 命令 command 命令行中可以是任意的shell命令 而且可以不止一条命令 每条命令必须独占一行 命令行开头的空格必须由一个Tab键产生 编写规则为 target dependencycommand 2 什么是Makefile 实例有a c b c两个程序 a c externvoidp char str main p helloworld b c include stdio h voidp char str printf s n str viMakefilehello a cb cgcc ohelloa cb c 注意 这里gcc前面的空格是由Tab键产生的 执行 make 回车系统自动编译 gcca cb c ohello 最终产生一个叫hello的可执行程序 在上面的例子中 Makefile只有一条规则 目标为hello 依赖为a c和b c 命令为gcc ohelloa cb c 每一条规则的处理方法 1 目标是一个文件 当它的依赖也是文件时 如果依赖文件的时间比目标文件要新 则运行规则所包含的命令来更新目标 2 如果依赖是另一个目标 则用同样的方法先来处理这个依赖的目标 3 如目标文件不存在 make就会执行命令行列表中的命
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源汽车动力电池核心技术突破与应用前景报告
- 2025年工业污染场地修复技术优化与成本效益研究报告
- 2025年房地产数字化营销效果监测与优化策略报告
- 2025年电动汽车电池热管理技术热管理系统节能降耗创新报告
- 自家民宿出租合同范本
- 琴行合作入驻合同范本
- 类似卖身契约合同范本
- 签订电子送达协议合同
- 网络公司商城合同范本
- 自建冷库租赁合同范本
- 社会工作行政(第三版)课件全套 时立荣 第1-11章 社会服务机构- 社会工作行政的挑战、变革与数字化发展
- 《走近科学家》课件
- 《基础护理学(第七版)》考前强化模拟练习试题库500题(含答案)
- 小学数学与科学素养的融合教育
- 4.3 海-气相互作用课件【知识精研】高二上学期地理鲁教版(2019)选择性必修1
- 苏科版九年级上册数学第一次月考试卷附答案
- 2025年蜀道集团招聘笔试参考题库含答案解析
- 全套55讲-鱼C论坛小甲鱼Python课后题-20211129034856
- 浙江省温州市“摇篮杯”2022-2023学年高一下学期化学竞赛试卷 含解析
- 24年追觅在线测评28题及答案
- 部编版二年级语文上册《植物妈妈有办法》教学课件2篇21
评论
0/150
提交评论