- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GCC编译手册
18.Unix/Linux系统的C编程
课程名称 UNIX系统环境与软件开发 教学章节 §11Unix/LinuxC编程 教学目的 掌握UNIX/Linux系统cc、gcc和g++的使用方法,掌握静态库和动态库的构建与使用方法 教学重点 UNIX/Linux系统的文件相关的系统及使用方法 教学难点 UNIX/Linux系统的文件相关的系统及使用方法 知识点 Cc、gcc和g++的使用,文件相关的系统调用 教学时间 班级 教学器具 课件;多媒体播放系统 教学过程
11.1
11.1.1 功能及用法
1.为什么要使用编译器?
C语言源程序需要经过编译和链接这两个过程才能转换成二进制可执行程序。
一般在Unix系统中使用的C编译器是cc(C Compiler的缩写)。在各个Linux发行版本中广泛使用的C编译器名为gcc(GNU cc)。
2.功能
gcc能将C/C++源程序和目标程序编译并调用链接程序ld生成可执行文件,如果用户没有给出可执行文件的名字,gcc将默认生成一个名为a.out的可执行文件。
3.用法
gcc的一般用法为: gcc [options] filenames
其常用格式为:
gcc [-c][-S][-E][-s][-g][-static][-shared][-rdynamic]
[-Idir …][-Ldir …][-lmylib][-x Language][-Olevel]
[-Dmacro[=defn] …][-Umacro][-mmachine-option …]
[-o out_file] infile …
几点说明:gcc根据源程序的后缀名来决定使用哪一种语言的编译器进行编译工作。后缀名为“.c”(小写)的文件被gcc认为是C语言的源程序文件。例如:gcc hello.c。gcc编译出来的可执行程序默认是a.out。g++是一个C++版本的gcc编译器。g++要求C++语言源程序文件带有后缀名“.cc”。例如:g++ hello.cc
11.1.2 参数及说明
-c 编译后仅输出*.o型的目标文件,而不连接生成可执行程序
-S 编译后仅生成汇编语言文件*.s,但不生成目标文件和可执行代码
-s 生成可执行文件时,删除符号表和重定位信息。生成成品软件时使用
-E 在预处理过程后结束,不进行编译和连接,也不生成可执行代码
-g 在可执行文件中加入调试信息,便于程序的调试
-Idir 将目录dir添加到头文件搜索范围
-lmylib 连接时搜索库libmylib.a
-Ldir 将目录dir添加到库文件搜索范围
-o outfile 指定输出文件名。若不指定则采用默认方式
-mcpu=cpu-type 生成与机器相关的汇编代码
-O[L] 编译时进行优化。L为优化级别,分别0~3和s。生成最终产品时使用
-static 禁止使用共享库(动态连接库)
-shared 生成共享库
-rdynamic 连接时使用共享库
-Dname[=val] 宏定义变量name[=val]
-Uname 取消宏定义变量name
-x language 指定前端语言
11.1.3 示例
C程序:设有一个文件名为hello.c的程序,其内容为:
#include stdio.h
main()
{
printf(“Hello World!\n”);
}
执行步骤
gcc hello.c #生成可执行程序a.out
gcc –o hello hello.c #生成可执行程序hello
gcc –c hello.c #生成目标文件hello.o
gcc –S hello.c #生成汇编语言程序hello.s
gcc –S –mcpu=i386 #生成80x86格式汇编语言
编译生成可执行文件之后,就可以运行了,方法为:
./a.out 或 ./hello
输出结果 Hello World!
2. c++程序
下面是一个c++版的Hello World程序,其文件名为hello.C,内容为:
#include iostream.h
main (void)
{
cout Hello, World! endl;
}
编译方法:
使用c++或g++来编译:
g++ hello.C #生成可执行程序a.out
c++ –o hello hell.C #生成可执行程序hello
g++ –s -o Hello hello.C #生成删除符号表的可执行程序Hello
或使用gcc并指定库文件来编译c++程序:
gcc –c hello.C #生成目标文件hello.o
gcc –o h hello.C –lst
您可能关注的文档
最近下载
- 日立电梯UAX-Ⅱ图纸K3500429.pdf
- HP Prime快速入门手册.pdf VIP
- 汽车底盘系统检修(张振东)任务1 离合器踏板的检查与调整.ppt VIP
- 2025版北师大版数学二年级上册全册教学设计教案.pdf
- 汽车底盘系统检修(张振东)任务3 离合器分离轴承、压盘和从动盘的检修.ppt VIP
- 2023年人教版小升初语文模拟试卷含答案 .pdf VIP
- 慢性老年病患者日常用药误区及对策.doc VIP
- 人教版三年级上册数学全册教学设计(配2025年秋新版教材).docx
- 《人工环境工程学科奖学金2011预.doc VIP
- 初高中衔接课因式分解市公开课一等奖百校联赛获奖课件.pptx VIP
文档评论(0)