




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AcegeneITCo.Ltd.,1,Linux操作系统开发,周炯上海艾基信息技术有限公司,AcegeneITCo.Ltd.,2,内容提要,使用gcc使用Gnusmake管理项目使用autoconf创建自配置软件比较和归并源文件使用RCS进行版本控制,AcegeneITCo.Ltd.,3,一、使用gcc,1gcc特性2使用简介3常用命令行选项,AcegeneITCo.Ltd.,4,1gcc特性,编译过程预处理、编译、链接支持风格ANSIC、C+、ObjectiveC调试信息能够在生成调试信息同时进行优化交叉编译大量扩展(降低可移植性),AcegeneITCo.Ltd.,5,2使用简介,#includeintmain(void)fprintf(stdout,”HelloWorld!n”);return0;gcchello.cohello./hello,AcegeneITCo.Ltd.,6,2使用简介,过程:cpp预处理所有的宏、展开头文件编译为目标代码使用ld链接成二进制文件gcc-Ehello.c-ohello.cppgcc-xcpp-output-chello.cpphello.ogcchello.o-ohellogcctest2.ctest.c-otest,AcegeneITCo.Ltd.,7,2使用简介,常用扩展名解释.cc语言源代码.C,.ccc+源代码.i预处理后的c源代码.ii预处理后的c+源代码.S,.s汇编语言源代码.o汇编后的目标代码.a,.so库代码,AcegeneITCo.Ltd.,8,3常用命令行选项,-oFILE指定输出文件名,未指定a.out-c只编译,不链接-DFOO=BAR定义预处理宏-IDIR将DIR指定的目录添加到头文件搜索路径中-LDIR将DIR加入到库文件的搜索目录列表中,缺省情况下gcc只链接共享库-static链接静态库-lFOO链接名为FOO的函数库,如-lmath,AcegeneITCo.Ltd.,9,3常用命令行选项,-g在可执行文件中包含调试信息-ggdb在可执行程序中包含只有GNUdebugger才能识别的大量调试信息-p加入prof能够识别的统计信息-ON编译时进行优化(N为优化级别)-w关闭所有警告-Wall发出所有gcc能提供的警告-werror将警告转化为错误,中止编译-v显示每一步详细信息,AcegeneITCo.Ltd.,10,二、使用Gnusmake管理项目,为何使用make编写makefile深入了解makefile额外的make命令行选项调试make常见错误常用的makefile目标,AcegeneITCo.Ltd.,11,1为何使用make,包含多个源文件的项目在编译时有长而复杂的命令行,可以通过makefile保存这些命令行来简化该工作make可以减少重新编译所需要的时间,因为make可以识别出哪些文件是新修改的Make维护了当前项目中各文件的相关关系,从而可以在编译前检查是否可以找到所有的文件,AcegeneITCo.Ltd.,12,2编写makefile,makefile:一个文本形式的文件,其中包含一些规则告诉make编译哪些文件以及怎样编译这些文件,每条规则包含以下内容:一个target,即最终创建的东西一个和多个dependencies列表,通常是编译目标文件所需要的其他文件需要执行的一系列commands,用于从指定的相关文件创建目标文件,AcegeneITCo.Ltd.,13,2编写makefile,make执行时按顺序查找名为GNUmakefile,makefile或者Makefile文件,通常,大多数人常用MakefileMakefile规则:target:mandcommand.注意:command前面必须是制表符,AcegeneITCo.Ltd.,14,2编写makefile,例子:,editor:editor.oscreen.okeyboard.ogcc-oeditoreditor.oscreen.okeyboard.oeditor.o:editor.ceditor.hkeyboard.hscreen.hgcc-ceditor.cscreen.o:screen.cscreen.hgcc-cscreen.ckeyboard.o:keyboard.ckeyboard.hgcc-ckeyboard.cclean:rmeditor*.o,AcegeneITCo.Ltd.,15,3深入了解makefile,伪目标:如上例中的clean变量:声明VARNAME=sometext.使用$(VARNAME)递归展开变量,如TOPDIR=/home/young,SRCDIR=$(TOPDIR)/src,则SRCDIR=/home/young/srcmake可以检测到错误的递归展开,如CC=gccCC=$(CC)o解决方案CC:=gcc-oCC+=-O2,AcegeneITCo.Ltd.,16,例子,OBJS=editor.oscreen.okeyboard.oHDRS=editor.hscreen.hkeyboard.heditor:$(OBJS)gcc-oeditor$(OBJS)editor.o:editor.c$(HDRS)gcc-ceditor.cscreen.o:screen.cscreen.hgcc-cscreen.ckeyboard.o:keyboard.ckeyboard.hgcc-ckeyboard.cclean:rmeditor$(OBJS),AcegeneITCo.Ltd.,17,3深入了解makefile,环境变量:make会自动读取环境变量并使用自动变量:$规则的目标对应的文件名$sigrot.patch使用-r参数来遍历目录patch-p0sigrot.patchp0表示指定使用补丁前补丁中所包含的文件名中需要剥离的”/”的重数,-p则剥离了除最终文件名之外的所有部分。恢复:patch-p0-RMerged_file,AcegeneITCo.Ltd.,43,基本用法,rcs用于两种情形:如果以只读方式取出文件后做修改,并且想保存结果,此时可以使用rcs-lFilename,取出该文件,并加锁,同时不覆盖现有的同名文件。如果需要打开其他人对文件的加锁,可以使用rcs-ufilename,此时文件被解锁,并且原来的加锁者将受到一条解释信息。此外:rcs-mrev:msg可以修改某个版本的描述信息,AcegeneITCo.Ltd.,44,基本用法,rcsclean清除RCS文件,基本用法为rcscleanoptionsfile1file2不加任何选项的rcsclean删除哪些在取出后没有更改的工作文件-u选项可以先解锁所有已经加锁的文件,然后再删除没有更改的那些工作文件。使用-rM.N可以删除指定的版本,例如:rcscleanr2.3howdy.c将删除howdy.c的2.3版,AcegeneITCo.Ltd.,45,RCS关键字,$Id$Log$日志消息,RCS是在先前的日志消息上面插入新的消息,而不是用最新的消息取代以前的消息$Author$存入该版本的用户登录名$Date$该版本存入的日期和时间,使用UTC格式$Header$RCS文件的全路径名,版本号,日期,时间,作者,状态,加锁者(在文件被加锁的情形下),AcegeneITCo.Ltd.,46,RCS关键字,$Locker$锁定该版本的使用者的登陆名$Name$用于取回该版本的符号名$RCSfile$不包含路径的RCS文件名$Revision$该版本的版本号$Source$RCS文件的全路径名$State$版本的状态:Exp(试验版本)、Stab(稳定版本)、Rel(发行版本),缺省为Exp,AcegeneITCo.Ltd.,47,ABICompatibility,WhatisApplicationBinaryInterfaceRuntimecompatibilitymechanismAllowsforanupgradeoptiononcomponentssolongasthe“binary”interfaceismaintainedIf“binary”interfacechangedthenABIissaidtohave“changed”losingcompatibility,AcegeneITCo.Ltd.,48,ABIIllustration,#defineARRAY_SIZE8structmy_structintarrayARRAY_SIZE;init_struct(structmy_struct*p)memset(p,0,sizeof(structmystruct);,AcegeneITCo.Ltd.,49,GlibcCompatibility,Usuallyonlyaffectedby2nd-digitchangee.g.,glibc-2.1glibc-2.2SymbolsareversionedtoprovideexecutablebinarycompatibilityDoesNOTprovidelinktimecompatibilityMustlinkagainstthesameversionofglibcthatobjectswerecompiledagainstSinceOraclelinksatthecustomersite,wegetaroundthisbyusingglibcstubsforlinking,AcegeneITCo.Ltd.,50,GccC+Compatibility,C+ABIhaschangedbetween2.96and3.2C+onLinuxnowclosertoISOstandardC+programsbuiltwithgcc-2.96willnotrunwithruntimelibrariesfromgcc-3.2compatibilitypackage?,AcegeneITCo.Ltd.,51,CurrentArchitectures,ThesearetheCPUsthatcanrunLinuxtoday:ListallCPUsonewouldneedtobuildforifwantedtosendaproductonalltypesofCPUs.IBMs/390,IA32Buildingfori386coversmostbasesw/ooptimizations,AcegeneITCo.Ltd.,52,Debuggingyourcode,Spinningprocess?Oracleshadow?Attachtoprocessusinggdbdebugger:,$gdb-pid8520whichoracleGDBisfreesoftware,coveredbytheGNUGeneralPublicAttachingtoprogram:oracle,process8520Readingsymbolsfrom9.2.0/lib/libodm9.so.done.(gdb)where#00 x40550104insemop()from/lib/i686/libc.so.6#10 x0981aae9insskgpwwait()WaitonSemaphore#60 x0822ed45inkslwai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年初中数学考前冲刺复习方案
- 零售超市商品陈列标准规范
- 新零售业智能客服系统方案设计与应用
- 小学三年级体育教学活动案例
- 农产品动态平衡干燥技术创新创业项目商业计划书
- 耐磨齿轮表面处理技术企业制定与实施新质生产力项目商业计划书
- 精密滚珠丝杠副制造企业制定与实施新质生产力项目商业计划书
- 宠物主题乐园创新创业项目商业计划书
- 软件开发项目需求文档写作技巧
- 项目投资分红权益协议标准文本
- 养老院护理员的岗前培训
- 微生物检验技能-细菌的生化试验
- 2025年1月上海市春季高考模拟英语试卷(含答案解析)
- 中国慢性阻塞性肺疾病基层诊疗指南(2024年)解读
- 2024年代还款三方协议书模板范本
- 2024-2025学年广东省深圳市南山育才集团九年级(上)期中语文试卷
- 2024-2025学年四年级上册数学青岛版期中模拟检测试题(1~4单元)
- 外研版(2024)七年级上册 Unit 2 More than fun练习(含答案)
- 1.1+生命之歌高中音乐粤教花城版(2019)必修音乐鉴赏音乐鉴赏
- 职业技术学院智能物流技术专业人才培养方案
- 1.1 坚持改革开放(课件) 2024-2025学年九年级道德与法治上册 (统编版2024)
评论
0/150
提交评论