Linux作系统13.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux作系统13

BUPT TeleCC txs Linux操作系统 北京邮电大学 电信工程学院计算中心 C语言编程 使用Gcc 使用Gnu’s make管理项目 使用autoconf创建自配置软件 比较和归并源文件 使用RCS进行版本控制 一、使用Gcc 1 gcc特性 2 使用简介 3 常用命令行选项 1 gcc特性 编译过程 预处理、编译、链接 支持风格 ANSI C、C++、Objective C 调试信息 能够在生成调试信息同时进行优化 交叉编译 大量扩展(降低可移植性) 2 使用简介 #include stdio.h int main(void) { fprintf(stdout,”Hello World!\n”); return 0; } gcc hello.c –o hello ./hello 2 使用简介 过程: cpp预处理所有的宏、展开头文件 编译为目标代码 使用ld链接成二进制文件 gcc -E hello.c -o hello.cpp gcc -x cpp-output -c hello.cpp hello.o gcc hello.o -o hello gcc test2.c test.c -o test 2 使用简介 常用扩展名解释 .c c语言源代码 .C,.cc c++源代码 .i 预处理后的c源代码 .ii 预处理后的c++源代码 .S,.s 汇编语言源代码 .o 汇编后的目标代码 .a,.so 库代码 3 常用命令行选项 -o FILE 指定输出文件名,未指定a.out -c 只编译,不链接 -DFOO=BAR 定义预处理宏 -IDIR 将DIR指定的目录添加到头文件搜索路径中 -LDIR 将DIR加入到库文件的搜索目录列表中,缺省情况下gcc只链接共享库 -static 链接静态库 -lFOO 链接名为FOO的函数库,如-lmath 3 常用命令行选项 -g 在可执行文件中包含调试信息 -ggdb 在可执行程序中包含只有GNU debugger才能识别的大量调试信息 -p 加入prof能够识别的统计信息 -ON 编译时进行优化(N为优化级别) -w 关闭所有警告 -Wall 发出所有gcc能提供的警告 -werror 将警告转化为错误,中止编译 -v 显示每一步详细信息 二、使用Gnu’s make管理项目 为何使用make 编写makefile 深入了解makefile 额外的make命令行选项 调试make 常见错误 常用的makefile目标 1为何使用make 包含多个源文件的项目在编译时有长而复杂的命令行,可以通过makefile保存这些命令行来简化该工作 make可以减少重新编译所需要的时间,因为make可以识别出哪些文件是新修改的 Make维护了当前项目中各文件的相关关系,从而可以在编译前检查是否可以找到所有的文件 2 编写makefile makefile:一个文本形式的文件,其中包含一些规则告诉make编译哪些文件以及怎样编译这些文件,每条规则包含以下内容: 一个target,即最终创建的东西 一个和多个dependencies列表,通常是编译目标文件所需要的其他文件 需要执行的一系列commands,用于从指定的相关文件创建目标文件 2 编写makefile make执行时按顺序查找名为GNUmakefile,makefile或者Makefile文件,通常,大多数人常用Makefile Makefile规则: target: dependency dependency [..] command command [..] 注意:command前面必须是制表符 2 编写makefile 例子: 3 深入了解makefile 伪目标:如上例中的clean 变量: 声明 VARNAME=sometext [..] 使用 $(VARNAME) 递归展开变量,如TOPDIR=/home/young, SRCDIR=$(TOPDIR)/src,则SRCDIR=/home/young/src make可以检测到错误的递归展开,如CC = gcc CC=$(CC) –o 解决方案 CC:=gcc -o CC+= -O2 例子 3 深入了解makefile 环境变量:make会自动读取环境变量并使用 自动变量: $@ 规则的目标对应的文件名 $ 规则中的第一个相关文件名 $^ 规则中的所有相关文件的列表 $? 规则中日期新于目标的所有相关文件的列表 $(@D) 目标文件的目录部分(如果目标在子目录中) $(@F) 目标文件的文件名部分 3 深入了解makefile 预定义变量: AR 归档维护程序 ar AS 汇编程序 as CC C编译程序 cc CPP C预处理程序 cpp RM 文件删

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档