第3章linux下C编程基础.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
变量 hello:main.o func1.o func2.o gcc main.o func1.o func2.o –o hello 思考:如果要为hello目标添加一个依赖,如func3.o,该如何修改? hello:main.o func1.o func2.o func3.o gcc main.o func1.o func2.o func3.o –o hello 另一种: OBJ=main.o func1.o func2.o func2.o hello:$(OBJ) gcc $(OBJ) –o hello makefile中常用的预定义变量 自动化变量 在makefile中,存在系统默认的自动化变量 $^:代表所有的依赖文件 $@:代表目标 $:代表第一个依赖文件 hello:main.o func1.o func2.o gcc main.o func1.o func2.o –o hello 等价: hello:main.o func1.o func2.o gcc $^ -o $@ makefile中常见的自动变量 杂项 Makefile中“#”字符后的内容被视作注释 @:取消回显 hello:hello.c @gcc hello.c –o hello 第3章 Linux下C编程基础 3.1 GCC程序编译 3.2 GDB程序调试 3.3 Makefile工程管理 3.1 GCC程序编译 Linux系统下的gcc(GUN C Compiler)是GUN推出的功能强大、性能优越的多平台编译器,是GUN代表作之一。gcc可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%-30%。 Gcc编译器能将C、C++语言源程序、汇编程序编译、链接成可执行文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。 gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。 Gcc编译过程 Gcc编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing) 编译(Compiling) 汇编(Assembling) 链接(Linking) 文件类型 Gcc通过后缀来区别输入文件的类别: .c为后缀的文件:C语言源代码文件 .a为后缀的文件:是由目标文件构成的库文件 .C、.cc或.cxx为后缀:C++源代码文件 .h为后缀的文件:头文件 .i为后缀的文件:是已经预处理过的C源代码文件 .ii为后缀的文件:是已经预处理过的C++源代码文件 .o为后缀的文件:是编译后的目标文件 .s为后缀的文件:是汇编语言源代码文件 .S为后缀的文件:是经过预编译的汇编语言源代码文件 基本用法 Gcc最基本的用法是: gcc [选项] 要编译的文件 [选项] [目标文件] 目标文件可以缺省,默认生成的可执行文件命名为:a.out gcc编译选项大约有100多个,其中多数我们不常用,这里介绍其中最基本、最常用的参数。 总体选项 告警选项 优化选项 体系结构相关选项 选项由-和字母组成,如-c、-o等。 起步(演示) hello.c #include stdio.h int main() { printf(“hello world\n”); return 0; } 编译和运行程序: #gcc hello.c –o hello #./hello 输出:hello world gcc --预处理 在该阶段,对包含的头文件(#include)和宏定义(#define、#ifdef等)进行处理 。可以使用gcc的选项“-E” 让gcc在预处理结束后停止编译过程。 [root@localhost gcc]# gcc –E hello.c –o hello.i /* hello.i */ …… typedef int (*__gconv_trans_fct) (struct __gconv_step *, struct __gconv_step_data *, void *, __const unsigned char *, __const unsigned char **, __const unsigned char *, unsigned char **, size_t *); …… # 2 hello.c 2 int main() { printf(Hello! This is our embedded world!\n); return 0; } gcc --

文档评论(0)

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

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

1亿VIP精品文档

相关文档