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

下载本文档

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

文档简介

1、实验1 在虚拟机VMWare上安装Fedora 9实验目的:学习在windows环境下,虚拟机VMWare的安装和使用,以及在虚拟机VMWare上安装Linux的发行版Fedora 9,为后续实验练习linux系统的使用做准备。实验条件:计算机(已经安装winxp系统);VMWare7.0安装程序;Fedora 9安装光盘iso映像文件(Fedora-9-i386-DVD.iso)实验步骤:1. 安装和使用VMWare71.1. 解压并安装VMware(1)解压缩VMware_Workstation.rar到D盘根目录下,不能解压到含有中文路径的目录下,否则安装过程中或使用中可能会出现问题。(

2、2)双击“!)安装.cmd”文件启动安装命令,如果提示“你的系统中已经安装了.”,你必须先卸载之前的版本;卸载方法:可以用之前版本的卸载工具“!)卸载.cmd”卸载,也可用官方出的卸载工具再卸载一次。卸载之后一定要重启!否则会由此产生很多问题。(3)出现“精简版相关服务安装 主菜单”后,可按0需要全部功能,等待完成即可。(如果不需要全部功能则可选择按1-7,个选项的具体含义见“使用说明.txt”文件)(4)建立桌面快捷方式,方便运行,方法如下:以鼠标右键单击“vmware.exe”文件,在弹出菜单中点击“发送到”子菜单下的“桌面快捷方式”项。安装完成后就可双击桌面上的“vmware.exe快捷

3、方式”来运行VMWare 7.0了。1.2. 新建虚拟机(1)点击图标或者点击【文件/新建虚拟机】菜单打开“新建虚拟机向导”如下图所示。选择标准类型配置,点击“下一步”按钮。 (2)选择“安装镜像文件”,点击,选择Fedora-9-i386-DVD.iso文件。点击“下一步”按钮。(3)在虚拟机名称文本框中输入“Fedora9”,点击“浏览”按钮创建“D:fedora9”文件夹,作为虚拟机的存放目录。点击“下一步”按钮。(4)指定磁盘容量最大20G,点击“下一步”按钮。 (5)检查设置没有错误后,点击“完成”按钮。会出现“Fedora is not supported”的提示信息,这时关闭提示

4、信息对话框。点击【虚拟机/设置】菜单,出现“虚拟机设置”对话框,点击左上角“选项”选择卡,在右侧栏的版本对话选择“Other Linux 2.6.x kernel”项,点击“确定”按钮。2. 在VMWare虚拟机上安装Linux发行版Fedora9提示:虚拟机运行起来后,相当于虚拟出来另一台计算机,它也使用宿主系统WindowXP的键盘和鼠标,如果在安装过程中想点击安装界面中的按钮直接用鼠标点击即可,如果想使鼠标离开虚拟机窗口,应当按“Ctrl+Alt”键。2.1. 安装Fedora9(1)点击窗口中的“”,启动虚拟机,出现Fedora的安装界面,如下图所示:(2)使用键盘的“上、下方向键”选

5、择第一项“Install or upgrade an existing system”开始安装Fedora,当出现下图“test media”界面时,使用键盘的“左、右方向键”选择“Skip”项跳过安装媒体的检查,按“回车键”继续安装。(3)几分钟后出现下图界面,按“Next”按钮继续;(4)出现“What language would you like ”界面时,选择“简体中文”,按“Next”按钮继续;(5)出现“请为您的系统选择合适的键盘” 界面时,选择“美国英语式”,按“下一步”按钮继续;(6)弹出警告对话框时,按“是”按钮;(7)出现“网络设备”窗口点“Edit”按钮打开编辑界面,我

6、们一般使用静态的IP,选中“手动配置”,分别输入IP和子网掩码,按“确定”按钮,设置网关为,设置主DNS为,按“下一步”按钮继续;(8)出现时区设置界面时,选择城市为“Asia/Shanghai”, 按“下一步”按钮继续;(9)出现设置根账号(root)密码界面时,输入密码123456,弹出“脆弱密码”对话框,按“是”按钮采用此密码;(10)出现安装硬盘分区设置界面时,直接按“下一步”按钮,弹出“将分区写入磁盘”对话框,按“将修改写入磁盘”按钮继续,显示格式化分区进度条;(11)出现选择安装的软件包界面时,选中“软件开发”,“现在定制”,按“下一步”

7、按钮,选中“服务器”类的“FTP服务器”和“老的网络服务器”,按“下一步”按钮开始安装,将依次显示“检查依赖关系”进度条、“开启安装进程”进度条、“软件包安装进度”进度条,安装过程比较长,大约30分钟,请耐心等待;(12)安装完成后显示“祝贺您,安装已完成。”界面,按“重新引导”按钮重启Fedora系统;2.2. 第一次运行Fedora9第一次运行Fedora9需要进行时区、账户、网络等一些设置。(1)按按钮打开虚拟机电源,出现Fedora引导画面。(2)第一次运行时会出现“欢迎”界面,按“前进”按钮。(3)出现“许可证信息”界面,按“前进”按钮。(4)出现“创建用户”界面时,输入用户名和密码

8、创建一个普通用户,用户名和密码都用“arm”,按“前进”按钮。(5)出现“Date and Time”界面时,直接按“前进”按钮。(6)最后出现“硬件配置”界面,显示硬件信息,直接按“完成”按钮,弹出询问是否发送配置文件的对话框,点击“不,不发送”按钮,完成首次启动的设置。(7)Fedora启动起来后,首先显示登录界面如下图所示,点击“arm”用户,在“password”文本框中输入密码,点击“登录”按钮,出现GNOME桌面,这样Fedora就启动完成了,以后就可以通过鼠标在。3. 在VMWare虚拟机上使用光盘映像文件xxx.iso3.1. 虚拟机启动之前设置光盘映像文件按照下图步骤在虚拟机

9、开启电源之前,设置要使用的光盘映像文件xxx.iso,开启虚拟机电源启动进入Fedora系统之后,光盘映像挂载在/media目录下,在桌面上显示光盘图标,就可以像使用普通光盘一样使用光盘映像了。3.2. 虚拟机启动进入Linux系统之后设置光盘映像文件(1)进入Linux系统之后若桌面上已经有光盘图标,说明光驱中已经有光盘,如果想改用新的光盘映像文件,首先应弹出原光盘。如下图所示,鼠标右键点击光盘图标,在弹出的快捷菜单中点击“弹出”,就可以弹出原光盘。(2)使用虚拟机菜单【虚拟机/可移动设备/CD/DVD(IDE)/设置】打开“虚拟机设置”对话框,按照前面步骤选择使用的光盘映像文件xxx.is

10、o(3)使用虚拟机菜单【虚拟机/可移动设备/CD/DVD(IDE)/连接】启用光盘映像。Linux系统桌面上将出现新光盘映像图标。实验2 Linux常用命令的使用实验目的:学习linux系统常用命令的使用。实验条件:已经安装安装Linux系统的计算机(或winxp系统下在VMWare虚拟机上安装Linux系统);实验步骤:4. 使用文件浏览器双击桌面上的 图标将打开文件浏览器,和window系统的文件浏览器使用方法一样。文件浏览器还可以通过以下方法打开:(1)使用【应用程序/系统工具/文件浏览器】菜单(2)使用【位置】菜单设置文件浏览器,在单窗口中打开文件,方法如下:使用文件浏览器【编辑/首选

11、项】菜单打开“文件管理首选项”对话框,点击“行为”标签,选中“总是在浏览器窗口中打开”,点击“关闭”按钮。5. 使用文本编辑器geditgedit是Linux系统下的文本编辑器,使用方法类似于windows系统下的记事本程序,但具有自动根据文件类型语法加亮显示的功能。gedit通过【应用程序/附件/文本编辑器】启动,界面如下:6. 使用命令行终端在Linux系统中,有大量的命令在命令行终端使用更简洁方便。打开命令行终端窗口使用【应用程序/系统工具/终端】菜单,如下图所示。7. 常用命令的使用Linux常用命令如下:下面的操作都在命令行终端中执行,绝大多数命令都有参数,下面是通用参数说明: -h

12、elp 显示帮助,所有命令都可以通过help参数获得帮助信息。 -verbose 执行时显示详细的信息。 -version 显示版本信息。 7.1. 磁盘管理命令(1)ls功能说明:列出目录内容(list)。语法:ls -1aAbBcCdDfFgGhHiklLmnNopqQrRsStuUvxX-I -T -w -block-size=-color=-format=-full-time-help-indicator-style=-quoting-style=-show-control-chars-sort=-time=-version文件或目录.补充说明:执行ls指令可列出目录的内容,包括文件和

13、子目录的名称。示例:(2)cd功能说明:切换目录(change directory)语法:cd 目的目录补充说明:cd指令可让用户在不同的目录间切换,但该用户必须拥有足够的权限进入目的目录。示例:其中“cd ”命令中的“”代表当前用户的专用目录,每个用户在/home目录下都有以用户名命名的专用目录,根用户root的专用目录不在/home目录,而在根目录/root下。(3)pwd功能说明:显示工作目录的绝对路径名称(print working directory)语法:pwd -help-version示例:(4)df功能说明:显示磁盘的相关信息(disk free)。语法:df -ahHikl

14、mPT-block-size=-t -x -help-no-sync-sync-version文件或设备参数: -a或-all 包含全部的文件系统。 -block-size= 以指定的区块大小来显示区块数目。 -h或-human-readable 以可读性较高的方式来显示信息。 -H或-si 与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes。 -i或-inodes 显示inode的信息。 -k或-kilobytes 指定区块大小为1024字节。 -l或-local 仅显示本地端的文件系统。 -m或-megabytes 指定区块大小为1048576字节。 -n

15、o-sync 在取得磁盘使用信息前,不要执行sync指令,此为预设值。 -P或-portability 使用POSIX的输出格式。 -sync 在取得磁盘使用信息前,先执行sync指令。 -t或-type= 仅显示指定文件系统类型的磁盘信息。 -T或-print-type 显示文件系统的类型。 -x或-exclude-type= 不要显示指定文件系统类型的磁盘信息。 文件或设备 指定磁盘设备。补充说明:df可显示磁盘的文件系统与使用情形。示例:(5)mkdir功能说明:建立目录(make directories)语法:mkdir -p-help-version-m 目录名称参数: -m或-mo

16、de 建立目录时同时设置目录的权限。 -p或-parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录。补充说明:mkdir可建立目录并同时设置目录的权限。示例:在/root目录下建立arm子目录(6)rmdir功能说明:删除目录(remove directory)语法:rmdir -p-help-ignore-fail-on-non-empty-verbose-version目录.参数: -p或-parents 删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除。 -ignore-fail-on-non-empty 忽略非空目录的错误信息。补充说明:当有空目录要

17、删除时,可使用rmdir指令。示例:删除在/root目录下的arm子目录7.2. 文件管理命令(1)cp功能说明:复制文件或目录(copy)语法:cp -abdfilpPrRsuvx-S -V -help-spares=-version源文件或目录目标文件或目录 目的目录 参数:-a或-archive 此参数的效果和同时指定-dpR参数相同。 -b或-backup 删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。 -d或-no-dereference 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录。 -f或-force 强行复制文

18、件或目录,不论目标文件或目录是否已存在。 -i或-interactive 覆盖既有文件之前先询问用户。 -l或-link 对源文件建立硬连接,而非复制文件。 -p或-preserve 保留源文件或目录的属性。 -P或-parents 保留源文件或目录的路径。 -r 递归处理,将指定目录下的文件与子目录一并处理。 -R或-recursive 递归处理,将指定目录下的所有文件与子目录一并处理。 -s或-symbolic-link 对源文件建立符号连接,而非复制文件。 -S或-suffix= 用-b参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号。 -u或-upd

19、ate 使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在,才复制文件。 -v或-verbose 显示指令执行过程。 -V或-version-control= 用-b参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用-S参数变更,当使用-V参数指定不同备份方式时,也会产生不同字尾的备份字串。 -x或-one-file-system 复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不予复制。-sparse= 设置保存稀疏文件的时机。补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的

20、目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。示例:创建arm目录,并将install.log复制到arm目录(2)mv功能说明:移动或更名现有的文件或目录语法:mv -bfiuv-help-version-S -V 源文件或目录目标文件或目录参数:-b或-backup 若需覆盖文件,则覆盖前先行备份。 -f或-force 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录。 -i或-interactive 覆盖前先行询问用户。 -S或-suffix= 与-b参数一并

21、使用,可指定备份文件的所要附加的字尾。 -u或-update 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。 补充说明:mv可移动文件或目录,或是更改文件或目录的名称。示例:将arm目录下的install.log文件移动到/tmp目录下(3)rm功能说明:删除文件或目录(remove)语法:rm -dfirv-help-version文件或目录.参数:-d或-directory 直接把欲删除的目录的硬连接数据删成0,删除该目录。 -f或-force 强制删除文件或目录。 -i或-interactive 删除既有文件或目录之前先询问用户。 -r或-R或-rec

22、ursive 递归处理,将指定目录下的所有文件及子目录一并处理补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数-r,否则预设仅会删除文件。示例:先建立/root/tmp1/tmp2/tmp3目录,然后删除/root/tmp1及其下面的目录(4)which功能说明:查找文件语法:which 文件.补充说明:which指令会在环境变量$PATH设置的目录里查找符合条件的文件。示例:(5)cat功能说明:显示文件内容语法:cat -AbeEnstTuv -help -version fileName fileName补充说明:把档案文件内容显示在基本输出设备(屏幕),或加 fileN

23、ame 输入到另一个档案文件中。参数:-n 或 -number 由 1 开始对所有输出的行数编号-b 或 -number-nonblank 和 -n 相似,只不过对于空白行不编号-s 或 -squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行-v 或 -show-nonprinting示例:cat -n textfile1 textfile2 把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里cat -b textfile1 textfile2 textfile3 把 textfile1 和 textfile2 的档案内容加上行号(空白行

24、不加)之后将内容附加到 textfile3 里。(6)chmod功能说明:变更文件或目录的权限(change mode)语法:chmod -cfRv-help-version+/-/=文件或目录. 或 chmod -cfRv-help-version数字代号文件或目录. 或 chmod -cfRv-help-reference=-version文件或目录. 补充说明:在linux系统里,文件或目录权限有读取、写入和执行3种权限,搭配拥有者与所属群组管理权限范围。权限设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果对符号连接修改权限,会作用在被连接的原始文件。权限范围的表示法如下:

25、u:User,即文件或目录的拥有者。 g:Group,即文件或目录的所属群组。 o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。 a:All,即全部的用户,包含拥有者,所属群组以及其他用户。 有关权限代号的部分,列表于下: r:读取权限,数字代号为4。 w:写入权限,数字代号为2。 x:执行或切换权限,数字代号为1。 -:不具任何权限,数字代号为0。 s:特殊功能说明:变更文件或目录的权限。参数:-f或-quiet或-silent 不显示错误信息。 -R或-recursive 递归处理,将指定目录下的所有文件及子目录一并处理。 -reference= 把指定文件或目

26、录的权限全部设成和参考文件或目录的权限相同 + 开启权限范围的文件或目录的该项权限设置。 - 关闭权限范围的文件或目录的该项权限设置。 = 指定权限范围的文件或目录的该项权限设置。示例:改变install.log文件的权限,去掉写权限,加上执行权限(7)tar功能说明:建立或还原备份文件,可以加入或解开备份文件内的文件(tape archive)。语法:tar -ABcdgGhiklmMoOpPrRsStuUvwWxzZ -C -f -N 文件或目录.部分参数含义: -A或-catenate 新增文件到已存在的备份文件。 -c或-create 建立新的备份文件。 -C或-directory=

27、切换到指定的目录。 -d或-diff或-compare 对比备份文件内和文件系统上的文件的差异。 -f或-file= 指定备份文件。 -h或-dereference 不建立符号连接,直接复制该连接所指向的原始文件。 -i或-ignore-zeros 忽略备份文件中的0 Byte区块,也就是EOF。 -k或-keep-old-files 解开备份文件时,不覆盖已有的文件。 -K或-starting-file= 从指定的文件开始还原。 -l或-one-file-system 复制的文件或目录存放的文件系统,必须与tar指令执行时所处的文件系统相同,否则不予复制。 -m或-modification-

28、time 还原文件时,不变更文件的更改时间。 -N或-newer= 只将较指定日期更新的文件保存到备份文件里。 -O或-stdout 把从备份文件里还原的文件输出到标准输出设备。 -p或-same-permissions 用原来的文件权限还原文件。 -P或-absolute-names 文件名使用绝对名称,不移除文件名称前的/号。 -r或-append 新增文件到已存在的备份文件的结尾部分。 -t或-list 列出备份文件的内容。 -u或-update 仅置换较备份文件内的文件更新的文件。 -U或-unlink-first 解开压缩文件还原文件之前,先解除文件的连接。 -v或-verbose

29、显示指令执行过程。 -W或-verify 写入备份文件后,确认文件正确无误。 -x或-extract或-get 从备份文件中还原文件。 -z或-gzip或-ungzip 通过gzip指令处理备份文件。 -Z或-compress或-uncompress 通过compress指令处理备份文件。示例:实验3 GCC工具集的使用实验目的:学习linux系统下c语言开发工具集GCC的使用。实验条件:已经安装安装Linux系统的计算机,GCC工具已随系统安装(或winxp系统下在VMWare虚拟机上安装Linux系统);实验步骤:GCC是Linux下最重要的软件开发工具之一。GNU提供的编译工具包括汇编器

30、as、C编译器gcc、C+编译器g+、链接器ld和二进制转换工具objcopy 。gcc(GNU C Compiler)是GCC编译器组件之一,是一个全功能的ANSI C兼容编译器。在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。本次实验练习gcc、make 和gdb的基本使用方法。1. 查看gcc版本信息(1)打开终端窗口,输入gcc v命令查看gcc版本信息:(2)使用whereis gcc命令查看gcc相关目录2. 查看头文件和库文件使用文件浏览器查看gcc编译工具头文件和库文件目录,文件浏览器还可以通过

31、以下方法打开:l 使用【应用程序/系统工具/文件浏览器】菜单l 使用【位置】菜单(1)打开文件浏览器,进入/usr/bin目录,找到gcc文件,这就是gcc命令执行文件。(2)查看头文件,进入/usr/include目录,找到c语言头文件stdio.h,这就是使用输入输出函数(如printf函数)所需要包含的头文件。(3)查看库文件,进入/usr/lib目录,找到libc.a和libc.so文件,libc.a是标准C语言静态库,libc.so是标准C语言共享库(动态链接库),编程是默认使用共享库。常用到的Linux编程库列表:库名称说明库名称说明libc.so标准的C库libgthread.s

32、oGlib线程支持libdl.so连接使用的源代码库libgtk.soGIMP下的X库libglib.soGlib库libz.so压缩例程库libm.so标准数学库libvga.soLinux的VGA和SVGA图形库libGL.soOpenGL的接口libresolve.so使用因特网域名服务器接口libcom_err.so常用出错例程集合libpthread.soLinux多线程库libdb.so创建和操作数据库libgdm.soGNU数据库管理器3. gcc的基本用法gcc是一个全功能的ANSI C兼容编译器,使用gcc编译工具将C语言源程序编译成可执行文件,要依次经过四个阶段,即:预处理

33、(Pre-Processing)、编译(Compiling)、汇编(Assembling)和链接(Linking)。在编译C语言源程序时,GCC首先调用cpp命令进行预处理(比如将源代码中指定的头文件包含进来)。接着调用cc1命令进行编译,将源代码翻译生成汇编代码。然后调用as命令进行汇编,生成扩展名为.o的目标文件。当生成所有的目标文件之后,GCC最后调用链接器ld生成可执行文件。流程总结如下:源程序预处理器(cpp)编译器(ccl)汇编器(as)链接器(ld)可执行文件。3.1. 通过hello程序了解编程流程(1)在/root目录下建立新目录gccshiyan(2)打开gedit文本编辑

34、器,编辑hello.c源程序,并保存在gccshiyan目录(3)使用gcc编译hello.c,生成可执行文件hello用-o编译选项为要产生的可执行文件指定文件名hello(4)执行hello程序3.2. gcc命令选项的使用常用编译选项选项说明-c告诉GCC仅把源代码编译为目标代码,跳过链接的步骤,采用该选项不会生成可执行程序,而是生成与源文件名相同的以.o为后缀的目标文件。-o如果没有使用-o选项,会在当前目录下生成一个名为a.out的可执行程序。使用-o选项,-o后面带有自定义文件名,使用gcc命令生成可执行文件时,-S告诉GCC在为C代码产生汇编语言文件后停止编译。GCC会生成一个后

35、缀名为.s的汇编语言文件,但是同样不会生成可执行的程序-E-E选项指示编译器仅对输入文件进行预处理,预处理器的输出被送到标准输出(如显示器)而不是储存在文件里。-staticGCC默认情况下链接共享库,有时为了把一些函数静态编译到程序中,而无需链接动态库,就采用-static选项-I指定头文件路径。一般情况下,Linux下的大多数函数都将头文件放到/usr/include/目录下。但在有些情况下并不是这样,此时,使用GCC编译时必须指定所需要的头文件所在的路径。-I选项可以向GCC的头文件搜索路径中添加新的目录。例如,一个源程序所依赖的头文件在用户/home/ztg/include/目录下,此

36、时就要使用-I选项来指定:#gcc -I /home/ztg/include -o hello hello.c-L指定库文件路径。类似-I。通常,Linux将库文件放到/usr/lib/目录下。如果使用了不在标准位置的库,那么可以通过-L选项向GCC的库文件搜索路径中添加新的目录。例如,一个程序要用到的库libapp.so在/home/ztg/lib/目录下,为了让GCC能够顺利地链接该库,可使用命令:#gcc hello.c -L /home/ztg/lib -lapp -o hello这里的-l选项表示GCC去链接库文件libapp.so。Linux下的库文件在命名时有一个约定,应该以li

37、b三个字母开头,由于所有的库文件都遵循了同样的规范,因此在用-l选项指定链接的库文件名时,可以省去lib三个字母,也就是说GCC在对-lapp进行处理时,会自动链接名为libapp.so的库文件-llibrary告诉链接程序在生成最终可执行文件时用到的库-g告诉编译器,在编译的时候,产生调试信息,它不能与-o选项联合使用-O、-O2、-O3将优化状态打开,该选项不能与-g选项联合使用-Wall使gcc产生尽可能多的警告信息-Werror在发生警报时取消编译操作,即将警报看作是错误,它要求gcc将所有的警告当成错误进行处理,这在使用自动编译工具(如make等)时非常有用。-w禁止所有的报警-Dm

38、acro定义指定的宏,使它能够通过源码中的#ifdef进行检验-v在Shell的提示符号下键入gcc -v,会显示出目前正在使用的GCC的版本信息(1)使用-c 选项,生成hello.o文件(2)使用-S 选项,生成汇编文件(3)使用-o 选项,生成myhello可执行文件3.3. 处理编译错误(1)编辑带错误的源程序文件errohello.c(2)使用命令gcc errohello.c编译,会显示错误信息: “警告:隐式声明.”表示缺少包含printf函数声明的头文件,并且参数不对应。“7”、“10”表示警告所在的行数。请自己改正错误并重新编译。4. gdb的基本用法调试是程序开发过程中必不

39、可少的环节。gdb(GNU Debugger)是Linux下基于命令行的调试器,使用能在程序运行时观察程序的内部结构和内存的使用情况,可以查看变量,寄存器及堆栈,可以修改变量及内存值。GDB调试的是可执行文件,而不是源程序,在使用GDB工具调试程序之前,必须使用带有-g编译选项的gcc命令来编译源程序,在目标文件中产生相应的调试信息。常用的GDB调试命令如下:命令说明break N设置断点,N表示在源代码的第N行处设置断点clear N清除断点的命令,清除第N行处的断点continue从断点处继续执行程序file指定要调试的可执行程序info break显示当前断点清单,包括到达断点处的次数等

40、info files显示被调试文件的详细信息info func显示所有的函数名info local显示函数中的局部变量信息info prog显示被调试程序的执行状态info var显示所有的全局和静态变量名称kill终止正在调试的可执行程序list列出源代码,如果想列出更多的源代码,继续输入list命令(或者直接回车)make在不退出gdb的情况下运行make工具next执行一行源代码,如果有函数调用,不会进入该函数nexti或ni单步跟踪一条机器指令,便于观察REG和栈的变化print指定变量的值,例如:print xquit结束gdb调试任务run执行当前的可执行程序shell在不退出gd

41、b的情况下运行shell命令step单步跟踪,如果有函数调用,会进入该函数stepi或si单步跟踪一条机器指令,便于观察REG和栈的变化watch检查一个变量的值whatis查看变量的类型4.1. 编译生成带调试信息的hello程序4.2. 调试gdbhello程序(1)启动gdb(2)用list列出源代码(3)使用break命令设置断点(4)使用run命令运行程序,到断点停止(5)使用next命令运行一行程序(6)使用watch命令设置观察变量(7)使用print命令输出sum变量的值(8)使用quit命令退出gdb5. make工具的使用make是自动生成和维护目标程序的工具。make工具

42、通过一个称为Makefile的文件来完成并自动维护编译工作,Makefile文件的作用有两个:n 定义源文件之间的依赖关系n 指定生成目标的方法make的工作流程如下: 查找当前目录下的Makefile文件。 初始化文件中的变量。 分析Makefile中的所有规则。 为所有的目标文件创建依赖关系。 根据依赖关系,决定哪些目标文件要重新生成。 执行生成命令。Makefile文件规则语法:#注释目标文件:依赖文件列表命令列表5.1. makefile文件的基本写法(1)实验程序由prog1.c、prog2.c和lib.c三个文件组成。在自己的主文件夹下建立一个目录prog,源程序内容如下:(2)编

43、译上述程序的基本makefile文件打开文本编辑器,输入内容如下:#基本makefile文件prog: prog1.o prog2.ogcc prog1.o prog2.o -o progprog1.o:prog1.c lib.hgcc -c -I. -o prog1.o prog1.cprog2.o:prog2.cgcc -c prog2.c将文件保存在prog目录下,文件名为Makefile。(3)使用make命令编译源程序打开终端窗口,使用cd命令进入prog目录,输入make命令编译程序生成可执行文件prog。要运行prog程序,在命令行输入“./prog”。5.2. 使用变量的mak

44、efile文件的写法(1)打开文本编辑器,输入内容如下:OBJS=prog1.o prog2.oCC=gcctest2: $OBJS$CC -o test $OBJS#gcc -o test prog1.o prog2.oprog1.o: prog1.c lib.h$CC -c -I. -o prog1.o prog1.c prog2.o: prog2.c$CC -c -o prog2.o prog2.cclean:rm -f *.o *(2)将文件保存在prog目录下,文件名为makefile2。(3)使用make命令编译源程序打开终端窗口,使用cd命令进入prog目录,输入“make -f makefile2”命令编译程序生成可执行文件test2。“-f”参数用于指定make使用的makefile文件名,若不使用“-f”参数,默认使用Makefile文件。(4)输入make f makefile2 clean命令删除生成的.o文件。5.3. 使用自动变量和预定义变量的makefile文件的写法make支持使用自动变量自动生成依赖性,常用变量及含义如下:变量含义$*不包含扩展名的目标文件名

温馨提示

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

评论

0/150

提交评论