嵌入式交叉编译环境.ppt

上传人:夺命阿水 文档编号:76916 上传时间:2025-07-10 格式:PPT 页数:91 大小:7.01MB
下载 相关 举报
嵌入式交叉编译环境.ppt_第1页
第1页 / 共91页
嵌入式交叉编译环境.ppt_第2页
第2页 / 共91页
嵌入式交叉编译环境.ppt_第3页
第3页 / 共91页
嵌入式交叉编译环境.ppt_第4页
第4页 / 共91页
嵌入式交叉编译环境.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

1、Neusoft Institute of Information七月 10,20252025/7/10大连东软信息学院大连东软信息学院 嵌入式系统导论课程嵌入式系统导论课程组组嵌入式系统导论嵌入式系统导论Neusoft Institute of Information七月 10,20252025/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2NFS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模式42.5GCC编译器编译器52.7Make工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建

2、82.6GDB调试器调试器6Neusoft Institute of Information七月 10,20252025/7/10交叉开发环境:宿主机调试通道目标机交叉开发环境:宿主机调试通道目标机“在谁的上面编写运行在谁上的程序的问题在谁的上面编写运行在谁上的程序的问题”2.1嵌入式交叉编译环境简介嵌入式交叉编译环境简介Neusoft Institute of Information七月 10,20252025/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2NFS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模

3、式42.5GCC编译器编译器52.7Make工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建82.6GDB调试器调试器6Neusoft Institute of Information七月 10,20252025/7/102.2NFS服务服务NFS服服务可以使网可以使网络上的上的同同为Linux或或Unix系系统主机共享文件系主机共享文件系统。NFS可以将可以将远程文件系程文件系统载入在本地文件系入在本地文件系统下下。远程的硬程的硬盘、目、目录和光和光驱都可以都可以变成本地成本地主机目主机目录树中的一个子目中的一个子目录。载入后与入后与处理自理自己的文件系己的文件系

4、统一一样使用即可。不只方便,也使用即可。不只方便,也节省了重复保存文件的空省了重复保存文件的空间、传输文件的文件的时间及及网网络带宽。Neusoft Institute of Information七月 10,20252025/7/10NFS特点特点NFS系系统也是使用也是使用C/S体系体系结构,就是有服构,就是有服务器端与客器端与客户端端服服务器端提供共享的文件系器端提供共享的文件系统,必,必须把文件系把文件系统输出出(export)出去出去客客户端端则要把文件系要把文件系统载入到自己的系入到自己的系统下下使用使用NFS,需要在服,需要在服务器端器端设置置输出,在客出,在客户端端设置置载入入

5、2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/10NFS服服务器端配置器端配置(1)关关闭防火防火墙(2)配置共享目配置共享目录-客客户端主机端主机IP范范围(3)主机主机IP(4)启启动NFS服服务2.2NFS服务服务NFS客户端客户端(1)设置客户端设置客户端IP地址地址(2)挂载共享目录挂载共享目录mount-tnfs主机主机ip:共享目录共享目录挂载点挂载点注意事项:关闭防火墙,主机与客户端在同一注意事项:关闭防火墙,主机与客户端在同一ip段段Neusoft Institute of Information七月 1

6、0,20252025/7/10具体配置步具体配置步骤服服务器端器端1)关)关闭防火防火墙2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/102)配置)配置NFS服务器服务器2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/102-1)设置共享目)设置共享目录和主机范围录和主机范围2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/102-2)设置其他选项)设置其他选项2.2NFS服务服务Neu

7、soft Institute of Information七月 10,20252025/7/102.2NFS服务服务2-3)设置其他选项)设置其他选项Neusoft Institute of Information七月 10,20252025/7/103)设置置NFS服服务器的器的IP2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/104)启)启动NFS服服务2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/10客客户端端1)配置)配置ip2.2NFS服务服

8、务Neusoft Institute of Information七月 10,20252025/7/102)挂)挂载NFS2.2NFS服务服务Neusoft Institute of Information七月 10,20252025/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2NFS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模式42.5GCC编译器编译器52.7Make工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建82.6GDB调试器调试器6Neusoft Institute

9、 of Information七月 10,20252025/7/10Samba服服务可可实现Windows和和Linux不同系不同系统间交交换文件共享。文件共享。2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/10具体具体设置步置步骤服服务器端器端1)关)关闭防火防火墙(同(同NFS)2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/102)配置)配置Samba服服务器器2.3Samba服务服务Neusoft Institute of Informa

10、tion七月 10,20252025/7/102-1)设置共享目录)设置共享目录和访问权限和访问权限2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/102.3Samba服务服务2-2)设置共享目录)设置共享目录和访问权限和访问权限Neusoft Institute of Information七月 10,20252025/7/102.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/102.3Samba服务服务2-4)服务器设置)服务器设置Neusoft

11、 Institute of Information七月 10,20252025/7/102.3Samba服务服务2-4)服务器设置)服务器设置Neusoft Institute of Information七月 10,20252025/7/103)配置)配置Samba服务器主机服务器主机ip2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/104)启动)启动Samba服务服务2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/10客客户端端1)配置)配置

12、Windows的的IP只要和你开的服只要和你开的服务器器IP在同一网段就行在同一网段就行2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/102)在)在Windows上上访问共享共享2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/103)访问成功成功2.3Samba服务服务Neusoft Institute of Information七月 10,20252025/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2N

13、FS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模式42.5GCC编译器编译器52.7Make工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建82.6GDB调试器调试器6Neusoft Institute of Information七月 10,20252025/7/10混合开混合开发模式的必要:模式的必要:由于初学者由于初学者对Linux系系统不是很熟悉,通常会不是很熟悉,通常会采用采用Windows下下强大的大的编辑工具,通工具,通过共享再共享再在在Linux系系统下下进行行编译、调试等工作。等工作。(1)VMwar

14、e虚虚拟机机设置共享置共享(2)SSH客客户端端软件件(3)Windows下的文本下的文本编辑工具工具2.4Windows和和Linux混合开发模式混合开发模式Neusoft Institute of Information七月 10,20252025/7/10(1)VMware虚虚拟机机设置共享置共享-12.4Windows和和Linux混合开发模式混合开发模式Neusoft Institute of Information七月 10,20252025/7/10(1)VMware虚虚拟机机设置共享置共享-22.4Windows和和Linux混合开发模式混合开发模式解压缩文件解压缩文件tarz

15、xvfVMwareTools-5.0.0-13124.tar.gzC/home安装文件安装文件进入解压缩后的文件夹:进入解压缩后的文件夹:cdvmware-tools-distrib/安装:安装:./vmware-install.plNeusoft Institute of Information七月 10,20252025/7/10(1)VMware虚虚拟机机设置共享置共享-32.4Windows和和Linux混合开发模式混合开发模式设置共享设置共享Neusoft Institute of Information七月 10,20252025/7/10(2)SSH客客户端端软件件2.4Wind

16、ows和和Linux混合开发模式混合开发模式SSH的英文全称:的英文全称:SecureShellSSH把所有传输的数据进行加密,并且把所有传输的数据进行加密,并且SSH客户端软件可将传输客户端软件可将传输的数据进行压缩后再传输。的数据进行压缩后再传输。(1)PuTTY(2)SecureShellClientNeusoft Institute of Information七月 10,20252025/7/10(3)Windows下的文本下的文本编辑工具工具2.4Windows和和Linux混合开发模式混合开发模式UltraEdit-32SourceInsightNeusoft Institute

17、 of Information七月 10,20252025/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2NFS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模式42.5GCC编译器编译器52.7Make工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建82.6GDB调试器调试器6Neusoft Institute of Information七月 10,20252025/7/10gcc(GNUCCompiler)能将能将C、C+语言源程序、言源程序、汇编语言程序和目言程序和目标程序程序

18、编译、连接成可接成可执行文件。是行文件。是GNU推出的功推出的功能能强大、性能大、性能优越的多平台越的多平台编译器,可以在多种器,可以在多种硬体平台上硬体平台上编译出可出可执行程序,其行程序,其执行效率与一行效率与一般的般的编译器相比平均效率要高器相比平均效率要高20%30%。2.5GCC编译器编译器Neusoft Institute of Information七月 10,20252025/7/10gcc的的执行行过程程使用使用gcc由由C语言源代言源代码文件生成可文件生成可执行文件的行文件的过程要程要经历四个相互关四个相互关联的步的步骤 1、预处理理(也称也称预编译,Preprocessi

19、ng)对头文件(文件(include)、)、预编译语句(如句(如define等)等)进行分析行分析预处理器理器cpp2、编译(Compilation)将将预处理后的文件理后的文件转换成成汇编语言言,生成文件生成文件.s编译器器ccl3、汇编(Assembly)由由汇编变为目目标代代码(机器代机器代码),生成,生成.o的文件的文件汇编器器as4、连接接(Linking)连接目接目标代代码,生成可生成可执行程序行程序链接器接器ld2.5GCC编译器编译器Neusoft Institute of Information七月 10,20252025/7/10gcc的执行过程(ESc)四个相互关四个相互

20、关联的步的步骤 源文件源文件.c1、.c源文件源文件2、生成、生成.i文件文件3、生成文件、生成文件.s4、生成、生成.o的文件的文件5、生成可、生成可执行程序行程序41-E-E-S-S-c-c预处理预处理编译编译汇编汇编链接链接2.5GCC编译器编译器Neusoft Institute of Information七月 10,20252025/7/10GNUC的使用的使用基本基本语法法 gccoptionsfilenames说明:明:在在gcc后面可以有多个后面可以有多个编译选项,同,同时进行多个行多个编译操作。操作。当你不用任何当你不用任何选项编译一个程序一个程序时,GCC将会建立将会建立

21、假定假定编译成功成功)一个名一个名为a.out的可的可执行文件。行文件。2.5GCC编译器编译器Neusoft Institute of Information七月 10,20252025/7/10gcc选项-o选项你能用你能用-o编译选项来来为将将产生的可生的可执行文件指定一个文行文件指定一个文件名来代替件名来代替 a.out。例:例:gccocountcount.c-c选项:告:告诉GCC仅把源代把源代码编译为目目标代代码,而取消而取消连接的步接的步骤。缺省。缺省时GCC建立的目建立的目标代代码文件有一个文件有一个.o的的扩展名。展名。例:例:gccctest2.c-E只运行只运行 C预

22、编译器。器。-S编译选项告告诉 gcc在在为 C代代码产生了生了汇编语言文件后言文件后停止停止编译。2.5GCC编译器编译器Neusoft Institute of Information七月 10,20252025/7/10-includefile功能相当于在代码中使用#include例子用法:gcc-o example example.c-include/usr/include/stdio.h-I 用来指定用来指定头文件目文件目录./usr/include目目录一般是不用指定的一般是不用指定的,但是如果但是如果头文件不在文件不在/usr/include里我里我们就要用就要用-I参数指定了,

23、比如参数指定了,比如头文件放在文件放在/myinclude目目录里,那里,那编译命令行就要加上命令行就要加上-Imyinclude参数了,如果不加你会得到一个参数了,如果不加你会得到一个“xxxx.h:Nosuchfileordirectory”的的错误。2.5GCC编译器编译器Neusoft Institute of Information七月 10,20252025/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2NFS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模式42.5GCC编译器编译器52.7Make

24、工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建82.6GDB调试器调试器6Neusoft Institute of Information七月 10,20252025/7/10Gdb(GNUdebugger)是)是GNU开开发组织发布的布的一个一个强大的大的Unix/Linux下的程序下的程序调试工具。工具。是一个命令行的是一个命令行的调试器,但器,但gdb具有比很多具有比很多图形形化化调试器更器更强大的功能。大的功能。可以可以调试各种程序,包括各种程序,包括C,C+,JAVA,PASCAL等等具有具有远程程调试功能功能对嵌入式非常有用嵌入式非常有用2.6GDB调

25、试器调试器Neusoft Institute of Information七月 10,20252025/7/10Gdb主要可以完成下面任主要可以完成下面任务:(1)启)启动程序,并可以指定某些参数控制程序的程序,并可以指定某些参数控制程序的运行运行(2)可)可让被被调试的程序在用的程序在用户所指定的断点所指定的断点处停停住住(3)当程序停止)当程序停止时,检查程序的状程序的状态(4)动态地改地改变程序的参数,可以避程序的参数,可以避过bug,继续查找其他的找其他的问题2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10g

26、dbprogram也就是你的也就是你的执行文件,一般在当前目行文件,一般在当前目录下下2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10Gdb的命令可以使用的命令可以使用help命令来命令来查看,看,help命令只是列命令只是列出出gdb的命令种的命令种类。可以使用可以使用help命令,命令,显示示class种种类中的所有命中的所有命令。令。可以使用可以使用help命令,命令,查看看command命令命令的帮助。的帮助。Gdb中中输入命令入命令时,可以不用,可以不用输入命令的全称,只用入命令的全称,只用输入命令的前几个

27、字符就可以。入命令的前几个字符就可以。在在linux下,可以按两次下,可以按两次TAB键来来补齐命令的全称。命令的全称。Gdb中运行中运行Linux的的shell程序,如程序,如shell。2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/103.3GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10加加载要要调试的的执行文件行文件file加加载要要调试的的执行程序行程序exec。2.6GDB调试器调试器Neusoft Institute of Infor

28、mation七月 10,20252025/7/103.3GDB调试器调试器查看源代看源代码list显示程序第示程序第linenum行的周行的周围的源程序的源程序list显示函数名示函数名为function的函数周的函数周围的源程序的源程序list显示当前行后面的源程序示当前行后面的源程序list-显示当前行前面的源程序示当前行前面的源程序setlistsizen设置一次置一次显示源代示源代码的行数的行数showlistsize查看当前看当前listsize的的设置置2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10设置

29、断点(置断点(BreakPoint)break-进入指定函数入指定函数时停住。停住。break-在指定行号停住在指定行号停住2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10清除断点清除断点deletebreakpointsrange删除指定的断点,除指定的断点,breakpoints为断点号,断点号,range表示表示断点号的范断点号的范围(如:(如:2-4)。如果不指定断点号,)。如果不指定断点号,则表示表示删除所有的断点。其除所有的断点。其简写命令写命令为d。比比删除更好的一种方法是除更好的一种方法是disabl

30、e断点,断点,disable了断了断点,点,gdb不会不会删除,当除,当还需要需要时,enable即可,就即可,就好像回收站一好像回收站一样。2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/103.3GDB调试器调试器设置置观察点察点观察点一般用来察点一般用来观察某个表达式的察某个表达式的值是否是否变化了。化了。watch为表达式(表达式(变量)量)expr设置一个置一个观察点。一旦表达察点。一旦表达式式值有有变化化时,马上停住。上停住。infowatchpoints列出当前列出当前设置的所有置的所有观察点察点2.6GD

31、B调试器调试器Neusoft Institute of Information七月 10,20252025/7/10恢复程序运行和恢复程序运行和单步步调试run(r)从程序开始运行程序从程序开始运行程序continue(c)恢复程序运行,直到程序恢复程序运行,直到程序结束,或是下一个断点到来。束,或是下一个断点到来。step(s)单步步执行,行,进入入调用的函数的内部用的函数的内部next(n)单步步执行,不会行,不会进入入调用的函数内部用的函数内部finish(f)如果已如果已进入了某函数,而想退出入了某函数,而想退出该函数返回到它的函数返回到它的调用函数中用函数中 2.6GDB调试器调试器

32、Neusoft Institute of Information七月 10,20252025/7/10查看运行看运行时数据数据print查看当前程序的运行数据。看当前程序的运行数据。为格式。格式。2.6GDB调试器调试器退出退出GDBquitorq退出退出GDBNeusoft Institute of Information七月 10,20252025/7/10练习1(1)键入入vi,编辑一个新文件一个新文件gexam.c。其内容如下:。其内容如下:#includemain()inta,i=0;a=0;while(i10)a=a+2;printf(thevalueofa=%dn,a);slee

33、p(1);i=i+1;2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10练习1(2)保存退出保存退出exam.c编译exam.c。使用使用 gcc-oexamoexam.c使用使用 gcc-g-ogexamexam.c比比较gexam与与 examo的大小,因的大小,因为 gexam含有含有调试信息,所以信息,所以gexam比比 examo大。大。执行行gexam与与examo执行行examo键入入./examo。这里里./表示当前目表示当前目录执行行gexam键入入./gexam。2.6GDB调试器调试器Neusof

34、t Institute of Information七月 10,20252025/7/10练习1(3)使用使用gdb调试程序程序(1)启)启动gdb程序程序(gdb)gdb(2)读入入调试程序程序(gdb)filegexam(3)列出相)列出相应于正在于正在执行的程序的原文件内容行的程序的原文件内容(gdb)list(4)在程序)在程序a=0;处设置一个断点置一个断点(gdb)break4(注:(注:这里里4为程序程序a=0;所在程序的行号,所在程序的行号,若自己更改)若自己更改)(5)在程序)在程序printf(“thevalueofa=%dn”,a);处设置一个断点置一个断点(6)执行行该

35、程序程序(gdb)run(7)查看看变量量a的的值(gdb)printa(8)查看看变量量a的的类型型(gdb)whatisa(9)执行下一个源程序行行下一个源程序行(gdb)next(10)从断点开始)从断点开始继续执行到下一个断点行到下一个断点(gdb)continue(11)查看看变量量a的的值(gdb)printa,看看,看看a是否有是否有变化化(12)不停地)不停地执行(行(gdb)continue,直到程序,直到程序结束。束。(13)退出)退出gdbquit2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10

36、练习2:程序功能:程序功能为先先显示一个字符串,再反序示一个字符串,再反序显示,使用示,使用GDB找找出其中的出其中的错误并改正并改正#includevoidmy_print(char*string)printf(Thestringis%sn,string);voidmy_print2(char*string)char*string2;intsize,i;size=strlen(string);string2=(char*)malloc(size+1);for(i=0;isize;i+)string2size-i=stringi;string2size+1=0;printf(Thestring

37、printedbackwardis%sn,string2);2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025/7/10练习2:程序功能:程序功能为先先显示一个字符串,再反序示一个字符串,再反序显示,使示,使用用GDB找出其中的找出其中的错误并改正并改正intmain()charmy_string=hellothere;my_print(my_string);my_print2(my_string);return;2.6GDB调试器调试器Neusoft Institute of Information七月 10,20252025

38、/7/10第2章 嵌入式交叉编译环境2.1嵌入式交叉编译环境嵌入式交叉编译环境12.2NFS服务服务22.3Samba服务服务32.4Windows和和Linux混合开发模式混合开发模式42.5GCC编译器编译器52.7Make工具的使用工具的使用72.8嵌入式交叉编译环境的搭建嵌入式交叉编译环境的搭建82.6GDB调试器调试器6Neusoft Institute of Information七月 10,20252025/7/103.4make工具的使用工具的使用Make工具及工具及makefile文件概述文件概述Makefile基本知基本知识Makefile应用用 1)为单个文件个文件编写写

39、makefile2)为多个文件多个文件编写写makefile3)使用不同目)使用不同目录的文件的的文件的makefile的写法的写法Neusoft Institute of Information七月 10,20252025/7/10Make工具及工具及makefile文件概述文件概述GNUMake是程序自是程序自动维护工具工具在大型的开在大型的开发项目中,通常有几十到上百个的源文件,如果每目中,通常有几十到上百个的源文件,如果每次均手工次均手工键入入 gcc gcc 命令命令进行行编译的的话,则会会 非常不方便。因此,非常不方便。因此,人人们通常利用通常利用 make make 工具来自工具

40、来自动完成完成编译工作。工作。这些工作包括:些工作包括:1 1)如果)如果仅修改了某几个修改了某几个 源文件,源文件,则只重新只重新编译这几个源文件;几个源文件;2 2)如果某个)如果某个头文件被修改了,文件被修改了,则重新重新编译所有包含所有包含该头文件的文件的源文件。源文件。Neusoft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识基本基本makefilemakefile结构构Makefile由一系列由一系列规则组成,成,规则格式如下:格式如下:其中:其中:target需要由需要由 make工具工具创创建的建的项项

41、目,目,通常是目的文件和可通常是目的文件和可执行文件。通常使用行文件。通常使用“目目标(target)”一一词词来表示要来表示要创创建的建的项项目。目。prerequisites 要要创建的建的项目依目依赖于哪些文件。于哪些文件。command 创建每个建每个项目目时需要运行的命令。需要运行的命令。注:命令前面需要敲入注:命令前面需要敲入tab键,而不是空格!,而不是空格!target:prerequisites依赖关系依赖关系command命令命令Neusoft Institute of Information七月 10,20252025/7/10Make工具及工具及makefile文件概述

42、文件概述MakeMake及及makefilemakefile原理原理GNU makeGNU make的主要工作是的主要工作是读进文本文件文本文件makefilemakefile。这些文件主要是些文件主要是有关那些文件(目的文件)是从哪些有关那些文件(目的文件)是从哪些别的文件(依靠文件)中的文件(依靠文件)中产生的,用什么命令来生的,用什么命令来进行行这个个产生的生的过程。程。有了有了这些信息,些信息,makemake会会检查磁磁盘上的文件,如果目的文件的上的文件,如果目的文件的时间比至少它的一个依靠文件旧,比至少它的一个依靠文件旧,MakeMake将将执行相行相应的命令,以便更新的命令,以便

43、更新目的文件。目的文件不一定是最后的可目的文件。目的文件不一定是最后的可执行文件,它可以是任何行文件,它可以是任何一个文件。一个文件。Neusoft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识Makefile实例:例:makefile开始开始myprog:foo.obar.ogccfoo.obar.o-omyprogfoo.o:foo.cfoo.hbar.hgcc-cfoo.c-ofoo.obar.o:bar.cbar.hgcc-cbar.c-obar.oclean:-rm*.omyprogmakefile结束束Neu

44、soft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识实例例说明明从上面的例子注意到,第一个字符从上面的例子注意到,第一个字符为#的行的行为为注注释释行。行。第一个非注第一个非注释释行指定行指定myprog为为目目标标,并且依,并且依赖赖于于foo.o和和bar.o文件。文件。foo.o和和bar.o文件又各自有自己的依文件又各自有自己的依赖规则makefile中一般都有中一般都有clean规则,在重新,在重新编译之前之前删除以前生成除以前生成的各个文件,此条的各个文件,此条规则没有依没有依赖文件文件使用使用make工具

45、的工具的执行行makefile的命令的命令为:make或或makemakefile)缺省文件名缺省文件名为当前目当前目录下的下的makefile或或Makefile或或 GNUmakefile,也可以使用命令行参数,也可以使用命令行参数f指定文件名指定文件名:例如例如 makeffilenameNeusoft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识实例例说明明如果没有如果没有“-f”参数,在参数,在Linux中,中,GNUmake工具在当前工作工具在当前工作目目录中按照中按照GNUmakefile、makefile

46、Makefile的的顺序搜索序搜索 makefile文件。文件。通通过命令行参数中的命令行参数中的target,可指定,可指定make要要编译的目的目标,并且,并且允允许同同时定定义编译多个目多个目标,操作,操作时按照从左向右的按照从左向右的顺序依次序依次编译target选项中指定的目中指定的目标文件。文件。如果命令行中没有指定目如果命令行中没有指定目标,则系系统默默认target指向描述文件中指向描述文件中第一个目第一个目标文件。文件。如如makemakecleanNeusoft Institute of Information七月 10,20252025/7/10Makefile基本知识

47、基本知识Makefile变量量环境境变量:量:(1)存)存储文件名列表。文件名列表。(2)存)存储可可执行文件名。行文件名。(3)存)存储编译器器标识。(4)存)存储参数列表。参数列表。比如我比如我们利用利用makefile变量把上面的量把上面的makefile文件重写一遍。文件重写一遍。Neusoft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识Makefile变量量使用使用环境境变量后的量后的makefile实例例=makefile开始开始=OBJS=foo.o bar.oCC=gccCFLAGS=-Wall O g

48、EXEC=myprog$(EXEC):$(OBJS)$(CC)$(OBJS)o$(EXEC)foo.o:foo.c foo.h bar.h$(CC)$(CFLAGS)c foo.c o foo.obar.o:bar.c bar.h$(CC)$(CFLAGS)bar.c o bar.o=makefile结束束=Neusoft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识Makefile变量量内部内部变量:量:$-$-扩展成当前展成当前规则的目的文件名的目的文件名$-扩展成依靠列表中的第一个依靠文件展成依靠列表中的第一个依靠

49、文件$-$-扩展成整个依靠的列表展成整个依靠的列表利用利用这些些变量,可以把上面的量,可以把上面的makefilemakefile写成:写成:Neusoft Institute of Information七月 10,20252025/7/10Makefile基本知识基本知识Makefile变量量=makefile开始=OBJS=foo.o bar.oCC=gccCFLAG=-Wall O gmyprog:$(OBJS)$(CC)$-o$foo.o:foo.c foo.h bar.h$(CC)$(CFLAG)c$-o$bar.o:bar.c bar.h$(CC)$(CFLAG)c$-o$=ma

50、kefile结束=Neusoft Institute of Information七月 10,20252025/7/10Makefile应用应用为单个文件个文件编写写makefile为多个文件多个文件编写写makefile使用不同目使用不同目录的文件的的文件的makefile的写法的写法多个子模多个子模块的文件的的文件的makefile写法写法Neusoft Institute of Information七月 10,20252025/7/10Makefile应用应用为单个文件个文件编写写makefile编写写hello.c程序程序#include int main(void)printf(H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 嵌入式开发

宁ICP备18001539号-1