欢迎来到天天文库
浏览记录
ID:24749223
大小:111.00 KB
页数:54页
时间:2018-11-15
《linux操作系统12-开发11878》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Linux操作系统开发王增中电畅通科技发展有限公司137175350181AcegeneITCo.Ltd.内容提要使用gcc使用Gnu’smake管理项目使用autoconf创建自配置软件比较和归并源文件使用RCS进行版本控制2AcegeneITCo.Ltd.一、使用gcc1gcc特性2使用简介3常用命令行选项3AcegeneITCo.Ltd.1gcc特性编译过程预处理、编译、链接支持风格ANSIC、C++、ObjectiveC调试信息能够在生成调试信息同时进行优化交叉编译大量扩展(降低可移植性)4AcegeneITCo.Ltd.2
2、使用简介#includeintmain(void){fprintf(stdout,”HelloWorld!”);return0;}gcchello.c–ohello./hello5AcegeneITCo.Ltd.2使用简介过程:cpp预处理所有的宏、展开头文件编译为目标代码使用ld链接成二进制文件gcc-Ehello.c-ohello.cppgcc-xcpp-output-chello.cpphello.ogcchello.o-ohellogcctest2.ctest.c-otest6AcegeneITC
3、o.Ltd.2使用简介常用扩展名解释.cc语言源代码.C,.ccc++源代码.i预处理后的c源代码.ii预处理后的c++源代码.S,.s汇编语言源代码.o汇编后的目标代码.a,.so库代码7AcegeneITCo.Ltd.3常用命令行选项-oFILE指定输出文件名,未指定a.out-c只编译,不链接-DFOO=BAR定义预处理宏-IDIR将DIR指定的目录添加到头文件搜索路径中-LDIR将DIR加入到库文件的搜索目录列表中,缺省情况下gcc只链接共享库-static链接静态库-lFOO链接名为FOO的函数库,如-lmath8Aceg
4、eneITCo.Ltd.3常用命令行选项-g在可执行文件中包含调试信息-ggdb在可执行程序中包含只有GNUdebugger才能识别的大量调试信息-p加入prof能够识别的统计信息-ON编译时进行优化(N为优化级别)-w关闭所有警告-Wall发出所有gcc能提供的警告-werror将警告转化为错误,中止编译-v显示每一步详细信息9AcegeneITCo.Ltd.二、使用Gnu’smake管理项目为何使用make编写makefile深入了解makefile额外的make命令行选项调试make常见错误常用的makefile目标10Ace
5、geneITCo.Ltd.1为何使用make包含多个源文件的项目在编译时有长而复杂的命令行,可以通过makefile保存这些命令行来简化该工作make可以减少重新编译所需要的时间,因为make可以识别出哪些文件是新修改的Make维护了当前项目中各文件的相关关系,从而可以在编译前检查是否可以找到所有的文件11AcegeneITCo.Ltd.2编写makefilemakefile:一个文本形式的文件,其中包含一些规则告诉make编译哪些文件以及怎样编译这些文件,每条规则包含以下内容:一个target,即最终创建的东西一个和多个depen
6、dencies列表,通常是编译目标文件所需要的其他文件需要执行的一系列commands,用于从指定的相关文件创建目标文件12AcegeneITCo.Ltd.2编写makefilemake执行时按顺序查找名为GNUmakefile,makefile或者Makefile文件,通常,大多数人常用MakefileMakefile规则:target:dependencydependency[..]commandcommand[..]注意:command前面必须是制表符13AcegeneITCo.Ltd.2编写makefile例子:edito
7、r: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*.o14AcegeneITCo.Ltd.3深入了解makefile伪目标:如上例中的clean变量
8、:声明VARNAME=sometext[..]使用$(VARNAME)递归展开变量,如TOPDIR=/home/young,SRCDIR=$(TOPDIR)/src,则SRCDIR=/home/young/srcmake可以检测到错误
此文档下载收益归作者所有