嵌入式Linux应用实验指导书_第1页
嵌入式Linux应用实验指导书_第2页
嵌入式Linux应用实验指导书_第3页
嵌入式Linux应用实验指导书_第4页
嵌入式Linux应用实验指导书_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式嵌入式 Linux 应用应用 实验指导书实验指导书 三亚学院理工学院 2014 年 8 月修订 实验一 多文件实验一 多文件 makefile 编写实验编写实验 一 实验目的一 实验目的 通过对编写及调试程序简单程序 熟练 Vi 编辑器的使用 GCC 编译器 GDB 调试器及 make 工程编译器的使用 二 实验内容二 实验内容 1 在 Linux 字符环境下 练习使用基本的文件操作命令 cp rm mv ls mkdir clear pwd chmod 等命令 2 在同一目录下用 Vi 编辑 makefile 然后用 make 验证所编写的 makefile 是否正确 三 实验仪器三 实验仪器 PC 机 虚拟平台 四 预备知识四 预备知识 Linux 基本命令 五 实验原理五 实验原理 1 文件编辑器 vi vi 是在 UNIX 上被广泛使用的中英文编辑软件 vi 是 visual editor 的缩写 是 UNIX 提 供给用户的一个窗口化编辑环境 基本上 vi 可以分为三种状态 分别是命令模式 command mode 插入模式 Insertmode 和底行模式 last line mode 各模式的功能 区分如下 1 vi 的基本操作 1 进入 vi 在系统提示符号输入 vi 及文件名称后 就进入 vi 全屏幕编辑画面 vi myfile 不过有一点要特别注意 就是您进入 vi 之后 是处于 命令行模式 command mode 您要切换到 插入模式 Insert mode 才能够输入文字 2 切换至插入模式 Insert mode 编辑文件 在 命令行模式 command mode 下按一下字母 i 就可以进入 插入模式 Ins ert mode 这时候你就可以开始输入文字了 3 Insert 的切换 您目前处于 插入模式 Insert mode 您就只能一直输入文字 如果您发现输错 了字 想用光标键往回移动 将该字删除 就要先按一下 ESC 键转到 命令行模式 c ommand mode 再删除文字 4 退出 vi 及保存文件 在 命令行模式 command mode 下 按一下 冒号键进入 Last line mode 例如 w filename 输入 w filename 将文章以指定的文件名 filename 保存 wq 输入 wq 存盘并退出 vi q 输入 q 不存盘强制退出 vi 2 命令行模式 command mode 功能键 1 插入模式 按 i 切换进入插入模式 insert mode 按 i 进入插入模式后是从光标当前位 置开始输入文件 按 a 进入插入模式后 是从目前光标所在位置的下一个位置开始输入文字 按 o 进入插入模式后 是插入新的一行 从行首开始输入文字 2 从插入模式切换为命令行模式 按 ESC 键 2 GNU C 编译器 LINUX 上可用的 C 编译器是 GNU C 编译器 它建立在自由软件基金会编程许可证的 基础上 因此可以自由发布 LINUX 上的 GNU C 编译器 GCC 是一个全功能的 ANCI C 兼容编译器 而一般 UNIX 如 SCO UNIX 用的编译器是 CC 下面介绍 GCC 和一些 GCC 编译器最常用的选项 1 使用 GCC 通常后跟一些选项和文件名来使用 GCC 编译器 GCC 命令的基本用法如下 gcc options filenames 命令行选项指定的编译过程中的具体操作 2 GCC 常用选项 GCC 有超过 100 个的编译选项可用 这些选项中的许多可能永远都不会用到 但一些 主要的选项将会频繁使用 很多的 GCC 选项包括一个以上的字符 因此必须为每个选项指 定各自的连字符 并且就像大多数 LINUX 命令一样不能在一个单独的连字符后跟一组选项 例如 下面的命令是不同的 gcc p g hello c gcc pg hello c 第一条命令告诉 GCC 编译 hello c 时为 prof 命令建立剖析 profile 信息并且把调试信 息加入到可执行文件里 第二条命令告诉 GCC 只为 gprof 命令建立剖析信息 当不用任何选项编译一个程序时 GCC 将建立 假定编译成功 一个名为 a out 的可 执行文件 例如 gcc hello c 编译成功后 当前目录下就产生了一个 a out 文件 也可用 o 选项来为即将产生的可执行文件指定一个文件名来代替 a out 例如 gcc o hello hello c 此时得到的可执行文件就不再是 a out 而是 hello GCC 也可以指定编译器处理步骤多少 c 选项告诉 GCC 仅把源代码编译为目标代码而 跳过汇编和连接步骤 这个选项使用得非常频繁因为它编译多个 C 程序时速度更快且更易 于管理 默认时 GCC 建立的目标代码文件有一个 o 的扩展名 3 执行文件 格式 可执行文件名 例 a out hello 3 gdb 调试工具 LINUX 包含了一个叫 gdb 的 GNU 调试程序 gdb 是一个用来调试 C 和 C 程序的强有 力调试器 它使你能在程序运行时观察程序的内部结构和内存的使用情况 它具有以下一 些功能 监视程序中变量的值 设置断点以使程序在指定的代码行上停止执行 一行行的执行代码 以下是利用 gdb 进行调试的步骤 1 调试编译代码 为了使 gdb 正常工作 必须使你的程序在编译时包含调试信息 调试信息里包含你程 序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号 gdb 利用这些信 息使源代码和机器码相关联 在编译时用 g 选项打开调试选项 4 makefile 工程管理器 make 是一个命令工具 是一个解释 makefile 中指令的命令工具 1 makefile 文件的基本结构 1 需要由 make 工具创建的目标体 一般是目标文件或可执行文件 也可以是一个 标签 对于标签这种特性 在后续的 伪目标 章节中会有叙述 2 目标文件或可执行文件所依赖的文件 3 创建每个目标体时所需要执行的命令 这一行必须以制表符 tab 开头 target prerequisites command 2 makefile 变量 变量是在 makefile 中定义的名字 用来代表一个文本字符串 该文本字符串称为该变 量的值 引用时用 引用 两种变量定义形式 1 递归定义展开方式 VAR var 在引用该变量的时候进行替换 如果该变量中包含了对 其他变量的引用 则在引用该变量的时候一次性将内嵌的变量全部展开 2 简单扩展方式 VAR var 在定义处展开 只展开一次 不包含对其他变量的引用 makefile 中几个常见的自动变量 第一个依赖文件的名称 所有不重复的依赖文件 以空格分开 目标文件的完整名称 所有时间戳比目标文件新的依赖文件 并以空格分开 六 实验步骤六 实验步骤 1 编辑 hello c 打开 Linux 虚拟机 cd home 进入 home 目录 mkdir hello 新建文件夹 hello vi hello c 打开 vi 编辑器 编辑 hello c 输入 i 进入编辑状态 编写一个 1 2 10 的程序 按 ESC 输入 保存退出 2 利用 GCC 编译生成可执行文件 hello gcc hello c o hello hello 输出结果 3 利用 GDB 调试 gcc g hello c o hello gdb hello l 查看源代码 b 3 设置断点 c 继续运行 4 编写 makefile 在 home maketest 在 home maketest 目录下 输入附录中 5 个文件 vi makefile 打开 vi 编辑器 编辑 makefile make 生成可执行文件 main main 输出结果 七 思考题七 思考题 1 什么是 makefile 为什么编写 makefie 附录 makefile 所需代码 main c include mytool1 h include mytool2 h int main mytool1 print hello mytool1 mytool2 print hello mytool2 return 0 mytool1 c include mytool1 h include void mytool1 print char print str printf This is mytool1 print s print str mytool1 h ifndef MYTOOL 1 H define MYTOOL 1 H void mytool1 print char print str endif mytool2 c include mytool2 h include void mytool2 print char print str printf This is mytool2 print s print str mytool2 h ifndef MYTOOL 2 H define MYTOOL 2 H void mytool2 print char print str endif 参考参考 makefile main main o mytool1 o mytool2 o gcc o main main o mytool1 o mytool2 o main o main c mytool1 h mytool2 h gcc c main c mytool1 o mytool1 c mytool1 h gcc c mytool1 c mytool2 o mytool2 c mytool2 h gcc c mytool2 c clean rm f o main 实验二 主机开发环境搭建实验二 主机开发环境搭建 一 实验目的一 实验目的 了解虚拟机与 Linux 操作系统的基础知识 熟悉虚拟机的安装与设置 掌 握在 Vmware 上安装 RedHat Linux 9 0 掌握在 Linux 环境下交叉编译器的使 用 超级终端的使用以及 NFS 配置 二 实验内容二 实验内容 1 开发环境 Linux minicom 2 Linux 定制或全部安装 下载安装交叉编译器 3 设置 windows 下超级终端 4 配置网络 主要是配置 NFS 需关闭 iptables 三 实验仪器三 实验仪器 PC 机 虚拟平台 四 预备知识四 预备知识 Linux 基本命令 五 实验原理五 实验原理 1 交叉编译 所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码 由于编译的过 程包括编译 链接等几个阶段 因此 嵌入式的交叉编译也包括交叉编译 交叉链接等过 程 通常 ARM 的交叉编译器为 arm elf gcc arm linux gcc 等 交叉链接器为 arm elf ld arm linux ld 等 2 交叉调试 调试器和被调试进程运行在不同的机器上 调试器运行在 PC 机 宿主机 而被调试 的进程则运行在各种专业调试板上 目标板 特点 1 调试器通过某种通信方式 串口 并口 网络 JTAG 等 控制被调试进程 2 在目标机上一般会具备某种形式的调试代理 它负责与调试器共同配合完成对目 标机上运行着的进程的调试 这种调试代理可能是某些支持调试功能的硬件设备 也可能 是某些专门的调试软件 如 gdbserver 3 目标机可能是某种形式的系统仿真器 通过在宿主机上运行目标机的仿真软件 整个调试过程可以在一台计算机上运行 此时物理上虽然只有一台计算机 但逻辑上仍然 存在着宿主机和目标机的区别 3 NFS 为 Network File System 的简称 最早是由 Sun 公司提出发展起来的 其目的就是让 不同的机器 不同的操作系统之间通过网络可以彼此共享文件 NFS 可以让不同的主机通 过网络将远端的 NFS 服务器共享出来的文件安装到自己的系统中 从客户端看来 使用 NFS 的远端文件就像是使用本地文件一样 在嵌入式中使用 NFS 会使应用程序的开发变得 十分方便 并且不用反复地进行烧写映像文件 NFS 的使用分为服务端和客户端 其中服务端是提供要共享的文件而客户端则通过挂 载 mount 这一动作来实现对共享文件的访问操作 在嵌入式开发中 通常 NFS 服务 端在宿主机上运行 而客户端在目标板上运行 六 实验步骤六 实验步骤 1 安装交叉编译器 点击 VM setting 打开对话框 选择 option shared folders 右上方 选择 always enabled 然后点击 ADD 打开对话框 选择共享目录 然后点 next finished 完成 打开共享目录 cd mnt hgfs 即可看到共享目录 将共享目录中的交叉编译压缩包拷贝到 Linux 目录下 cp arm linux gcc 4 3 2 tgz home 以 arm linux gcc 4 3 2 tgz 为例 2 安装交叉编译器 例 arm linux gcc 4 3 2 tgz 1 tar xzfv arm linux gcc 4 3 2 tgz C 2 vi etc profile 在 profile 中添加环境变量 export PATH usr local arm 4 3 2 bin PATH 3 最后 是刚才添加的环境变量生效 source etc profile 3 编写 hello c 程序 并进行交叉编译生成嵌入式 Linux 的可执行文件 hello 4 打开超级终端 5 配置 nfs

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论