第2章 嵌入式交叉编译环境.ppt
《第2章 嵌入式交叉编译环境.ppt》由会员分享,可在线阅读,更多相关《第2章 嵌入式交叉编译环境.ppt(81页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、十二月 29,20222022/12/29淮阴师范学院淮阴师范学院 嵌入式系统课程组嵌入式系统课程组嵌入式系统导论嵌入式系统导论第第2 2章章 嵌入式系统交叉编译环嵌入式系统交叉编译环境境十二月 29,20222022/12/29第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2 LinuxLinux系统安装系统安装22.3Windows2.3Windows和和LinuxLinux混合开发模式混合开发模式32.4Linux2.4Linux下常用命令下常用命令42.5GCC2.5GCC编译器编译器52.7Make2.7Make工具的使用工具的使用782.6GDB调试器调
2、试器62.82.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建十二月 29,20222022/12/29嵌入式系统中没有足够的硬件资源支持运行开嵌入式系统中没有足够的硬件资源支持运行开发工具和调试工具,因此嵌入式软件开发采用发工具和调试工具,因此嵌入式软件开发采用交叉编译、调试的方式。交叉编译、调试的方式。一般把交叉编译的主机称为宿主机,也就是普一般把交叉编译的主机称为宿主机,也就是普通的通的PC,而把软件实际运行的环境称为目标,而把软件实际运行的环境称为目标机。机。在编译阶段,借助宿主机编译出目标机的可执在编译阶段,借助宿主机编译出目标机的可执行代码,在调试阶段,一般应用软件的调试器行代
3、码,在调试阶段,一般应用软件的调试器和被调试的程序运行在同一台计算机上,但在和被调试的程序运行在同一台计算机上,但在嵌入式软件中,调试器运行在宿主机上,被调嵌入式软件中,调试器运行在宿主机上,被调试的程序运行在特定的嵌入式系统硬件平台上,试的程序运行在特定的嵌入式系统硬件平台上,他们之间通过串口或以太网口进行交互。他们之间通过串口或以太网口进行交互。2.1嵌入式交叉编译环境简介嵌入式交叉编译环境简介十二月 29,20222022/12/29交叉开发环境:宿主机调试通道目标机交叉开发环境:宿主机调试通道目标机“在谁的上面编写运行在谁上的程序的问题在谁的上面编写运行在谁上的程序的问题”2.1嵌入式
4、交叉编译环境简介嵌入式交叉编译环境简介十二月 29,20222022/12/292.2Linux系统安装系统安装安装虚拟机安装虚拟机VMware在在Vmware下进行安装前的配置下进行安装前的配置在在VMware下安装下安装Linux系统系统十二月 29,20222022/12/29混合开发模式的必要:混合开发模式的必要:由于初学者对由于初学者对Linux系统不是很熟悉,通常会系统不是很熟悉,通常会采用采用Windows下强大的编辑工具,通过共享再下强大的编辑工具,通过共享再在在Linux系统下进行编译、调试等工作。系统下进行编译、调试等工作。(1)Windows下的文本编辑工具下的文本编辑工
5、具(2)VMware虚拟机设置共享(安装虚拟机工具)虚拟机设置共享(安装虚拟机工具)(3)samba服务(提供服务(提供windows和和Linux下程序下程序的共享)的共享)(4)nfs服务(提供服务(提供Linux和和Linux下程序的共享)下程序的共享)2.3Windows和和Linux混合开发模式混合开发模式十二月 29,20222022/12/29(1)VMware虚拟机工具安装虚拟机工具安装2.3Windows和和Linux混合开发模式混合开发模式十二月 29,20222022/12/29(1)VMware虚拟机工具安装虚拟机工具安装2.3Windows和和Linux混合开发模式混
6、合开发模式解压缩文件解压缩文件tarzxvfVMwareTools-5.0.0-13124.tar.gzC/home安装文件安装文件进入解压缩后的文件夹:进入解压缩后的文件夹:cdvmware-tools-distrib/安装:安装:./vmware-install.pl十二月 29,20222022/12/29(1)VMware虚拟机设置共享虚拟机设置共享-12.3Windows和和Linux混合开发模式混合开发模式设置共享设置共享十二月 29,20222022/12/29(1)VMware虚拟机设置共享虚拟机设置共享-12.3Windows和和Linux混合开发模式混合开发模式访问共享访问
7、共享在在LinuxLinux的的/mnt/hgfsmnt/hgfs目录下可以访问目录下可以访问windowswindows下共享的文件夹下共享的文件夹cdcd/mnt/hgfsmnt/hgfs十二月 29,20222022/12/292.4Linux下常用命令下常用命令ls:显示当前目录下的所有文件和目录:显示当前目录下的所有文件和目录。ls-a:可以看到隐藏的文件,如以:可以看到隐藏的文件,如以.开头的文件开头的文件。pwd:显示当前目录路径:显示当前目录路径。ps:列举当前:列举当前TTY下所有进程下所有进程ps-A:列举所有:列举所有cd目录名:进入目录目录名:进入目录mkdir目录名:
8、创建目录目录名:创建目录rmdir目录名:删除空目录目录名:删除空目录rm-rf目录名:强行删除整个目录内容(无法恢复),其中目录名:强行删除整个目录内容(无法恢复),其中f表示表示强制不进行提示,强制不进行提示,r表示目录递归表示目录递归。man表示帮助命令表示帮助命令注:注:LINUX下的文件和目录是区分大小写的下的文件和目录是区分大小写的。十二月 29,20222022/12/292.4Linux下常用命令下常用命令压缩备份压缩备份bzip2:.bz2文件的压缩程序。bunzip2:.bz2文件的解压缩程序。tar:备份文件。tar是用来建立,还原备份文件的工具程序,它可以加入,解开备份
9、文件内的文件。十二月 29,20222022/12/292.4Linux下常用命令下常用命令解压,解压,.tar.bz2文件:文件:tar-xjf文件名文件名解压缩解压缩:.bin.gzgzip-d文件名文件名例例:把把abc.tar解压到解压到/myftp,命令是啥命令是啥?tarxvfabc.tar-C/myftpbz2解压解压1:bzip2-dFileName.bz2解压解压2:bunzip2FileName.bz2压缩:压缩:bzip2-zFileName.tar.bz2解压:解压:tarjxvfFileName.tar.bz2压缩:压缩:tarjcvfFileName.tar.bz2
10、DirName十二月 29,20222022/12/292.4Linux下常用命令下常用命令.bz解压解压1:bzip2-dFileName.bz解压解压2:bunzip2FileName.bz压缩:未知压缩:未知.tar.bz解压:解压:tarjxvfFileName.tar.bz压缩:未知压缩:未知十二月 29,20222022/12/292.4Linux下常用命令下常用命令.tgz解压:解压:tarzxvfFileName.tgz压缩:压缩:tarFileName.tgzDirName.tar.tgz解压:解压:tarzxvfFileName.tar.tgz压缩:压缩:tarzcvfFi
11、leName.tar.tgzFileName.zip解压:解压:unzipFileName.zip压缩:压缩:zipFileName.zipDirName 十二月 29,20222022/12/292.4Linux下常用命令下常用命令-文本编辑命令文本编辑命令vi(重要)(重要)Command Mode(命令模式)1.这是执行vi后的缺省模式2.此时键盘输入当作命令3.命令有大小写之区分Input Mode(插入模式)1.使用 a、i、o、c、r、s 进入插入模式2.用户输入的任何字符都被vi当做文件内容保存起来,并将其显示在屏幕上3.按下 ESC 键即可回到 Command Mode十二月
12、29,2022Last Mode(末行模式)在 Command Line 按下:即可进入该模式1.用来进行保存文件、打开文档或环境的设定2.命令有大小写之分2.4Linux下常用命令下常用命令-文本编辑命令文本编辑命令vi十二月 29,2022十二月 29,2022vi的进入和内容输入进入:vi 文件名 输入文件内容 (进入输入模式)新增(append)a 从光标所在位置后面开始新增内容 A 从光标所在行最后面的地方开始新增内容。插入(insert)i 从光标所在位置前面开始插入内容 I 从光标所在行的第一个非空白字符前面开始插入资料。开始(open)o 在光标所在行下新增一行并进入输入模式。
13、O 在光标所在行上新增一行并进入输入模式。(命令模式)十二月 29,2022命令模式1 1、光标的移动、光标的移动h h 左移一个字符 l l 右移一个字符j j 下移一行 k k 上移一行w,Ww,W 跳至后一个字的开头(W忽略标点)b,Bb,B 跳至前一个字的开头(B忽略标点)e e 移动到后一个字的末尾 至本行第一个非空字符$至行尾 0 0 至行首H H 移动到当前窗口的第一列 M M 移动到当前窗口的中间列 L L 移动到视窗的最后一列)光标所在位置到下个句子的第一个字母 (光标所在位置到该句子的第一个字母 光标所在位置到该段落的最后一个字母 光标所在位置到该段落的第一个字母十二月 2
14、9,20221 1、光标的移动、光标的移动(续)续)nH 将光标移到屏幕的第 n 行 nL 将光标移到屏幕的倒数第 n 行CTRL-d 向下半页CTRL-f 向下一页 CTRL-u 向上半页 CTRL-b 向上一页 n-减号移动到上一行的第一个非空白字符,前面加上数字可以指定移动到以 上 n 行n+加号移动到下一行的第一个非空白字符,前面加上数字可以指定移动到以下 n 行命令模式十二月 29,20222 2、删除、删除x x 删除光标所在字符 X 删除光标前面的字符 s s 删除光标所在字符,并进入输入模式S S 删除光标所在的行,并进入输入模式 dd 删除光标所在的行 D 从光标位置开始删除
15、到行尾 d d与光标移动命令的组合与光标移动命令的组合命令模式十二月 29,20223 3、修改修改 r r 修改光标所在字符,r 后接着要修改的字符。如,rc 可以用字符“c”替换光标所指向的当前字符 R R 进入替换状态,新增内容会覆盖原先内容,直到按 ESC 回到命令模式下为止 cccc 修改光标所在行 C C 修改从光标位置到该行末尾的内容 c与光标移动命令的组合命令模式十二月 29,20224 4、复制和移动、复制和移动yy 复制当前行到内存缓冲区nyy 复制 n 行内容到内存缓冲区y与光标移动的组合p 将缓冲区的内容粘贴到光标的后面P 将缓冲区的内容粘贴到光标的前面另:在末行模式下
16、实现移动:n1,n2 m n3:把 n1到n2 行内容搬到第 n3 行后命令模式十二月 29,20225 5、搜索字符串、搜索字符串/pattern 移至下一个包含pattern的行?pattern 移至上一个包含pattern的行/往下重复查找?往上重复查找n 在同一方向重复查找N在相反方向重复查找/pattern/+n移至下一个pattern所在行后的第n行?pattern?-n 移至上一个Pattern所在行前的第n行6 6、其他、其他 u 撤销前一条命令的结果命令模式*.$/包含在查找字符串中,要用转义字符()十二月 29,2022末行模式1 1、文件的保存和退出、文件的保存和退出:w
17、 w 保存保存:q q 退出退出:w!w!强制保存强制保存:q!q!强制退出强制退出:wqwq 保存退出保存退出:wqwq!强制保存退出强制保存退出十二月 29,2022末行模式2、字符串的替换、字符串的替换 :s/str1/str2/:s/str1/str2/用字符串用字符串 str2 str2 替换行中首次出现的替换行中首次出现的字符串字符串 str1str1 :s/str1/str2/g :s/str1/str2/g 用字符串用字符串 str2 str2 替换行中所有出现替换行中所有出现的字符串的字符串 str1str1 :.,$s/str1/str2/g :.,$s/str1/str2
18、/g 用字符串用字符串 str2 str2 替换正文当前替换正文当前行到末尾所有出现的字符串行到末尾所有出现的字符串 str1str1 :1,$s/str1/str2/g :1,$s/str1/str2/g 用字符串用字符串 str2 str2 替换正文中所替换正文中所有出现的字符串有出现的字符串 str1str1 :g/str1/s/str2/g :g/str1/s/str2/g 功能同上功能同上 十二月 29,2022末行模式末行模式其他:其他::n :n 将光标移到第将光标移到第 n n 行行 编辑多个文件编辑多个文件vi file1 file2 vi file1 file2:n :n
19、编辑下一个文件编辑下一个文件:e filename:e filename 编辑指定文件编辑指定文件十二月 29,20222022/12/29gcc(GNUCCompiler)能将能将C、C+语言源程序、汇编语言程序和目标语言源程序、汇编语言程序和目标程序编译、连接成可执行文件。是程序编译、连接成可执行文件。是GNU推出的功推出的功能强大、性能优越的多平台编译器,可以在多种能强大、性能优越的多平台编译器,可以在多种硬体平台上编译出可执行程序,其执行效率与一硬体平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高般的编译器相比平均效率要高20%30%。2.5GCC编译器编译器十二月 2
20、9,20222022/12/29gcc的执行过程的执行过程使用使用gcc由由C语言源代码文件生成可执行文件的过语言源代码文件生成可执行文件的过程要经历四个相互关联的步骤程要经历四个相互关联的步骤 1、预处理预处理(也称预编译,也称预编译,Preprocessing)对头文件(对头文件(include)、预编译语句(如)、预编译语句(如define等)进行分析等)进行分析预处理器预处理器cpp2、编译、编译(Compilation)将预处理后的文件转换成汇编语言将预处理后的文件转换成汇编语言,生成文件生成文件.s编译器编译器ccl3、汇编、汇编(Assembly)由汇编变为目标代码由汇编变为目标
21、代码(机器代码机器代码),生成,生成.o的文件的文件汇编器汇编器as4、连接、连接(Linking)连接目标代码连接目标代码,生成可执行程序生成可执行程序链接器链接器ld2.5GCC编译器编译器十二月 29,20222022/12/29gcc的执行过程(ESc)四个相互关联的步骤四个相互关联的步骤 源文件源文件.c1、.c源文件源文件2、生成、生成.i文件文件3、生成文件、生成文件.s4、生成、生成.o的文件的文件5、生成可执行程序、生成可执行程序31-E-E-S-S-c-c预处理预处理编译编译汇编汇编链接链接2.5GCC编译器编译器十二月 29,20222022/12/29GNUC的使用的使
22、用基本语法基本语法 gccoptionsfilenames说明:说明:在在gcc后面可以有多个编译选项,同时进行多个编译后面可以有多个编译选项,同时进行多个编译操作。操作。当你不用任何选项编译一个程序时,当你不用任何选项编译一个程序时,GCC将会建立将会建立(假定假定编译成功编译成功)一个名为一个名为a.out的可执行文件。的可执行文件。2.5GCC编译器编译器十二月 29,20222022/12/29gcc选项选项-o选项选项你能用你能用-o编译选项来为将产生的可执行文件指定一个文编译选项来为将产生的可执行文件指定一个文件名来代替件名来代替 a.out。例:例:gccocountcount.
23、c-c选项:告诉选项:告诉GCC仅把源代码编译为目标代码仅把源代码编译为目标代码,而取消连而取消连接的步骤。缺省时接的步骤。缺省时GCC建立的目标代码文件有一个建立的目标代码文件有一个.o的扩的扩展名。展名。例:例:gccctest2.c-E只运行只运行 C预编译器。预编译器。-S编译选项告诉编译选项告诉 gcc在为在为 C代码产生了汇编语言文件后代码产生了汇编语言文件后停止编译。停止编译。2.5GCC编译器编译器十二月 29,20222022/12/29-includefile功能相当于在代码中使用#include例子用法:gcc-o example example.c-include/us
24、r/include/stdio.h-I 用来指定头文件目录用来指定头文件目录./usr/include目录一般是不用指定的目录一般是不用指定的,但是如果头文件不在但是如果头文件不在/usr/include里我们就要用里我们就要用-I参数指定了,比如头文件放在参数指定了,比如头文件放在/myinclude目录里,那编译命令行就要加上目录里,那编译命令行就要加上-Imyinclude参数了,如果不加你会得到一个参数了,如果不加你会得到一个“xxxx.h:Nosuchfileordirectory”的错误。的错误。2.5GCC编译器编译器十二月 29,20222022/12/29编译下列代码并运行下
25、列代码编译下列代码并运行下列代码#includeintmain()doublecounter;doubleresult;doubletemp;for(counter=0;counter4000.0*4000.0*4000.0/20.0+2030;counter+=(5-3+2+1)/4)temp=counter/1239;result=counter;printf(Resultis%lfn,result);return0;2.5GCC编译器编译器十二月 29,20222022/12/292.5GCC编译器编译器十二月 29,20222022/12/29Gdb(GNUdebugger)是)是GN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 嵌入式交叉编译环境 嵌入式 交叉 编译 环境
限制150内