欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    一些通用的Makefile文件模板.docx

    • 资源ID:1106019       资源大小:44.08KB        全文页数:14页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    一些通用的Makefile文件模板.docx

    写在前面对于WindOWS下开发,很多IDE都集成了铜译器,如ViSUaIStUdi0,提供了“一裸编洋",编码完成后只需一个操作即可完成痂洋、健接、生成目标文件.1.jnUX开发与WindoWS不同.UnUX卜一般用的的gccg+漏译器,如果是开发ARM下的1.inUX程庠,还需用到arm-Iinuxgccarm-HnUX-g+交叉编评器。1.inux下也可以实现"一域编译"功能,此时需要一个编译脚本'Makefi1.e-.Makefi1.e可以手动编写,也可以借助自动化构建工具(如scons»CMake)生成“手动编写Makefi1.e是1.inux和Windows程序员的区别之一,一般地一个通用的Makefi1.e能够适合大部分1.inUX项目程序.个Makefi1.e模板2.1 耀译可执行文件Makefi1.eversion-.eecc=gCCDEBUG-OUSEeDEBUGCF1.AGS="Wa1.1.SOURCES-$(wiIdcard./source/4.c)INC1.UDES="I./inc1.ude1.IBNAMES-Ifuna-IfunsoO3三S(patsubst%.C,%.o,S(SOURCES)TARGET=app1.inksJ(TARGET):$(OBD)Ikdir-output»(CC)$(08)J(IIBPATH)KIIB-NAMES)ooutput/$(TARGET)$(VERSION)rf$(0B3)compi1.e%.o:%.c$(CC)S(INCIUOS)“DEBUG)-cJ(CF1.AGS)$<o.PHONY:c1.eanc1.ean:Cho"Remove1.inkedandCOmPiICdfi1.es*r-rfS(OBJ)S(TARGET)output【要点说明】1程序版本开发谓试过程可能产生多个程序版本,可以在目标文件后(前)增加版本号标识。VERSION«1.0S(CC)$(0BJ)$(1.I8_PATH)$(1.IB_NAMES)-OOUtPUt/(TARGET)$VERS1.ON)2编译器选界1.inux卜,为gccg+÷:arm下为arm-IinUX-gcc:不同CPU厂商提供的定制交叉编洋器名称可能不同,如HiSiIiCon"arm-hisiv300-1.inux-gcc”.cc=gcc【3】宏定义开发过程,特殊代码一般增加宏条件来选择是否漏洋,如调试打印输出代码.-D是标识,后面接若的是“宏DEBUG«-DUSE_0EBU6【4】译选项可以指定漏洋条件,如显示警告(-Wa1.1.),优化等级JO).CF1.AGS-Wa1.1.-O5源文件指定源文件目的路径,利用“Wi1.dCad”获取路径下所有依敕源文件.SOURCES-¢(wi1.dcard./source/*.c)【6】头文件包含依赖的头文件,包括源码文件和厚文件的头文件.INC1.UDES=-I./inc1.ude【7】库文件名称指定库文件名称,库文件有固定格式,伸态摩为IibXXX.a;动态库为IibXXXSO,指定库文件名称只需写“XXX”部分,1.IBeNAMES«-Ifun_a-Ifun_so【8】库文件路径指定依他摩文件的存放路径。注愈如果引用的是动态库,动态库也许拷贝到"/Iib"或者”/usr/1.ib”目录下,执行应用程序时,系统默认在该文件下索弓I动态库.IIB-PATH-1./Iib19目标文件调用"patsubst"将源文件(c)编译为廿标文件。.OBJ=S(patsubst%.c,X.o1.(SOURCES)rio执行文件执行文件名称TARGET-app11编译x.o:%.c$(CC)$(INC1.UDES)(DEBUG)$(CF1.AGS)$<-O$112俄接可创建一个"output”文件夹存放目标执行文件。链接完输出目标执行文件,可以删除编译产生的临时文件.。).S(TARGET):$(0B3)kdir-poutput$(Ce)$(083)S(1.I8.PATH)$(1.IB_NAMES)-Ooutput/$(TARGET).$(VERSION)rE-rf$(0BJ)r13清除编译信息执行"makec1.ean除嫡泽产生的临时文件。.PHONYrc1.eanc1.ean:echo,Remove1.inkedandcompi1.edfi1.es*rmrf$(0BJ)(TARGT)output2.2 编译的态库Makefi1.eVERSION-CC三gccDEBUG-CF1.AGS-Wa1.1.AR«arARF1.AGS=rvSOURCES-wi1.dcard.c)INC1.UDES=-I.IIBNAMES-O3«$(pat$ub$t%.C9%.o,!(SOURCES)TARGET=1.1.bfun-att1.ikJ(TARGET):$(OBD)Ikdir-output$(AR)J(ARFIAGS)OutputZJ(TARGET)S(VERSION).a$(0BJ)rm-rfS(OBJ)compi1.eX-o:%.c$(CC)$(INC1.UDES)(DEBUG)-CS(CF1.AGS)$<-O.PHONY:c1.eanc1.ean:©echo"Remove1.inkedandcompi1.edfi1.es"re-rf$(003)S(TARGET)output【要点说明】基本格式与“编译可执行MakefiIe”一致,不同点包括以下.【1】使用到“ar”命令将目标文件(.。)链接成静态库义件(.a)静态阵文件固定命名格式为:IibXXX.a.2.3 修译动态岸Makefi1.eVERSIONCC«gccDEBUGCF1.AGS«-fPIC-shared1.F1.AGS«-fPIC-sharedSOURCES三S(wi1.dcardx.c)INC1.UDES-I.1.IBNAMES三1.IBePATHOBJ(PatSUbSt%.otJ(SOURCS)TARGET-Iibfunsoii1.inkS(TARGET):S(OBJ)«ikdir-poutput$(CC)J(OBJ)$(1.IBePATH)$(1.IB_NAMES)J(1.F1.AGS)-OOUtputS(TARGET)$(VERSION).$0-r÷S(OBJ)Ucompi1.e$(CC)$(INC1.UDES)S(DEBUG)-CS(CF1.AGS)$<-O.PHONY:c1.eanc1.ean:echo"Remove1.inkedandcompi1.edfi1.esr«-rf$(003)S(TARGET)output【要点说明】基本格式与“编译可执行MakefiIe”一致.不同点包括以下.1编译选项和链接选项增加JfPIC-shared”选项。动态库文件固定命名格式为1.ibxxx.so.Demo3.1 片骨应用程序编写测试例程,文件存放目录结构如下,头文件存放在"inc1.ude"目录,库文件存放在-Hb'目录,海文件存放在"source"目录,Makefi1.e在当前目录下,root01.oca1.host:/mnt/hgfs/1.SW/Makefi1.e#treefun.hfun1.hfun1.ib三.hfun_1.ib_so.hF1.ibfun-a.a1- Iibfunso.soMakefi1.efun.cfun1.cmain,c源码1:/头文件/*ifndef_FUNB_H_力define.FUNH*endifexternvoidfun-printf(void);externvoidfun1.-rintf(void);/»文件/inc1.ude<stdio.h>力inc1.ude"fun0.h'voidfun-printf(void)(pri11tf(-Ca1.1.,fu11,.rn);)源码2:文件/ndefFUN1.HdefineFUN1.Hendifexternvoidfu111.-printf(void);/源文件/Inc1.ude<stdio.h>inc1.ude*funi.h"voidfun1.printf(void)(printfCCa1.1.,fu111.r11");)主函数源码:/源文件/inc1.ude<stdio.h>inc1.udeu.h,*inc1.ude"funi.h'tinc1.ude*fun_1.ib_a.h',inc1.udewfun1.ib.so.h-i11twain(void)(#ifdefUSEDEBUGrintf(*DebugApp1.icationstartup,rn,');*endiffun.printf();un1._pr1.nt();fun1.iba.printf();un-1.ib-so-pr1.t÷();return8;)阵文件,"1.ib"目录下存放两个库文件,一个静态库IibfUn_a.a.一个动态库IibfUn_so.so。Makefi1.e文件M为"2.1节"的Makefi1.e模板.测试运行:root01.o<a1.host:Mth9fsisvakefi1.e*ukcrace-!./inc1.ude-DUSEOeBUG-wa1.1.cso<rcefune.c-osourcefun.oncc-1./inc1.ude-DUSDBUG-wa1.1.-cso<rcefu1.cosourcefu1.orace-!./inc1.udeDUSCDeBUG-wa1.1.-cso<rceMin.c-0sourcein.orace.s(rcefuf>.o./source/fun1.o./source/Min.o-I./Ub-Uuna-Uun10ooutput/app1.GGroot01.oca1.hostnthgfs1.SWMakef1.ef./output/app1.MDcMqApp1.icationstartup.kai1.,fun.Ca1.1.,fun.pu,funUba*.kaU'funUbso.如果执行文件提示无"1.ibfu11.so.so",W1.JTm拷贝"1.ibfun_so.so"到根目录下的或者”usr1.ib1目录下,因为系统执行程序,默认从该路径引脚动态库】3. 2生成静态库编写测试例程,生产的阵文件即为"31%”调用的库文件<1.ibfun-a.a),文件存放目录结构如下:root1.oca1.host:mnthgfs/1.SW/MUb/sourcea#treeIf

    注意事项

    本文(一些通用的Makefile文件模板.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 1wenmi网站版权所有

    经营许可证编号:宁ICP备2022001189号-1

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!

    收起
    展开