- 1、本文档共88页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式LinuxGCC讲训
GCC是什么? GCC: GNU Compiler Collection; GCC支持多种硬件平台和操作系统,能编译多种语言(C, C++, Java, Ada95, Objective C, .etc); GCC与G++的关系: GCC用于编译多种语言编写的程序,主要是C; G++用于编译C++程序,以GCC为基础,编译过程中加入了C++的支持库,参数与GCC基本一致; 可以利用GCC编译C++程序,但是需要在参数中加入引用的C++库,比如libstdc++ (如gcc -o out –lstdc++ main.cc)。 可执行程序的生成过程 预处理(Preprocessing):分析各种预处理命令,如#define, #include, #if等; 编译(Compilation): 根据输入文件产生汇编语言的程序; 汇编(Assembly): 将汇编语言输入,产生扩展名为.o的目标文件; 链接(Linking):以.o目标文件,库文件作为输入,生成可执行文件; GCC支持的文件类型 C文件. c C源代码 .h C头文件 C++文件 file.hh, file.h C++头文件 file.C, file.cc, file.cxx等 C++源文件 预处理后的文件 file.i 预处理后的C源文件 file.ii 预处理后的C++源文件 编译后的文件 .o 目标代码 (obj) .s 汇编代码文件 file.a 目标文件库 GCC编译选项 命令行:gcc options infile… -E 不生成文件,只输出预处理结果(输出终端) -S 只预处理和编译,把文件编译成为汇编代码greet.s -c 预处理,编译和汇编,生成.o的obj文件 ( greet.o ) -o file 输出名为file的可执行文件名 (缺省为a.out) -O -O2 优化编译 -g: 产生可用于调试的输出 -Wall 提示更多警告信息 -Wstrict-prototypes 如果函数的声明或定义没有指出参 数类型,编译器就发出警告. -Wl,option 将option作为选项传递给linker, option 逗号分割, 如:-Wl,-soname,libmymath.so.1 与库和路径相关选项 -I dir 在dir这个目录寻找被include的文件 -L dir 在dir这个目录寻找被-l的库 -l name 链接库文件名为libname.a 或libname.so的库 -fpic或-fPIC 产生位置无关的目标代码,以构造共 享库(shared library) -static 禁止与共享库链接,若没有,则优先 选择共享库链接 -shared 产生共享库,在创建共享函数库时使用 示例 与宏相关的选项 -Dmacro: 相当于在源程序中使用 #define macro 1 -Dmacro=value -Umacro: 取消宏的定义 3. GCC编译过程 3.1 GCC编译过程 典型的编译过程 test.c –预处理? test.i –编译? test.s –汇编?test.o –连接? test $ cat test.c (查看程序源代码) #include stdio.h int main(int argc, char *argv[]) { printf(hello world\n); return 0; } $ gcc –o test test.c (编译连接程序) $ ./test (执行test程序) 3.2 预处理 预编译命令: $ gcc -o test.i -E test.c 或者 $ cpp -o test.i test.c 这里cpp不是值c plus plus,而是the C Preprocessor) 执行结果: 生成预处理后的文件test.i, 该文件包含了test.c需要的所有的类型和函数申明。 原理:读取c源程序,对伪指令和特殊符号进行处理。包括宏,条件编译,包含的头文件,以及一些特殊符号。基本上是一个替换的过程。 Hello.c #incl
您可能关注的文档
最近下载
- 膝关节炎的运动与锻炼处方.pptx
- 开封事业编工勤岗转管理岗考试.pdf
- 科普调研报告(共6篇).docx
- 水平二体操大单元教学设计(18课时).docx VIP
- 2024年郑州文化旅游和体育集团有限公司招聘笔试参考题库附带答案详解.pdf
- 安宁疗护 服务质量评价.pdf VIP
- HCIA认证 《数通》全套题库(746道含标准答案) .pdf
- 2024秋一年级上册道德与法治第2课《我向国旗敬个礼》教案教学设计.docx
- 简述一下数字化时代下的学校教育信息化建设与应用.docx
- Module 3 Unit 6 The honest Woodcutter 第一课时(课件)新魔法英语二年级上册.ppt
文档评论(0)