- 1、本文档共35页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
变量 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 --
您可能关注的文档
最近下载
- IEC_61373-1999(中文版).pdf VIP
- 院内获得性Tdp防治2010专家共识解读课件.ppt VIP
- 2024年景德镇艺术职业大学招聘笔试真题带答案详解.docx VIP
- 全国小学数学优质课教学设计一等奖《三角形的特性》教学设计.docx VIP
- 京牌指标出租合同范本7篇.docx VIP
- IPD职责说明[汇编].pdf VIP
- 2025年必威体育精装版的BRCGS包装材料全球标准第7版全套管理手册及程序文件.pdf
- 教育学原理课件第二章-教育与社会发展.pptx VIP
- 2024年联合国世界水发展报告 水—— 促进繁荣与和平 执行摘要.docx VIP
- 人大附中--早培班--初试--真题-语文.docx VIP
文档评论(0)