linux gun c语言,[Linux命令] GCC C和C++程序编译

编译C和C++程序.

gcc [options] file-list [-larg]

g++ [options] file-list [-larg]

Linux和Mac OS X 操作系统实用GUN C编译器gcc来预处理,编译,汇编和连接C语言源文件.具有不同前端的相同编译器g++也能处理c++源代码.gcc和g++编译器可以汇编和连接汇编语言源文件,也可以只连接目标文件或者以共享库的形式生成目标文件.

这些编译器从命令行上制定的文件获得输入.除非使用-o选项,否则编译器将得到的可执行程序存储在a.out中.

编译器gcc和g++都是GCC(GNU Compiler Collection)的一部分.GCC包括了C,C++,Objective C,Fortran,Java和Ada语言的前端和库.登陆gcc.gnu.org可获得更多信息.

推荐阅读:

提示:gcc与g++

本节主要针对gcc编译器介绍,但大多数情况下它也适用于g++.

选项

不带任何选项的gcc可以接收c语言源文件,汇编语言源文件,对象文件.适用程序gcc预处理,编译,汇编,连接这些文件,并生成名为a.out的可执行文件.如果gcc用来创建对象文件而不连接它们以生成可执行文件,每个对象文件名源文件的基称上加上扩展名.o组成.如果用gcc来创建可执行文件,那么,它就在连接文件后删除这些对象文件.

下面列出了一些最常见的选项.当某文件扩展名与某个选项关联时,用户可以家丁gcc把扩展名时添加到源文件的基称之后的.

-c

(compile) 不进行编译过程的连接步骤.编译和/或汇编源代码文件,保留扩展名.o的对象代码.

-Dname(=value)

通常#define预处理指令放在头文件或者include文件中.可以在命令中实用这个选项定义一些符号名.例如,-DLinux与在include文件的

#include Linux行等价;-DMACH=i586与#define DMACH i586 等价.

-E

(everything) 对于源文件,值允许编译过程中的预处理,禁止所有其他步骤,将结果写到标准输出.阿斯顿约定,C语言源文件预处理后的文件扩展名为.i;C++语言源文件预处理后的文件扩展名为.ii.

-fpic

使gcc生成与位置无关(position-independent)的源代码,这样的代码适于安装到共享库.

-writable-strings

默认情况下,GNU C编译器将字符串常量放置在受保护的内区(protected memory)中,使得它们不会被修改.一些程序(通常时版本较老的程序)假设用户可以修改字符串常量.该选项改变了gcc的行为,因此可以修改字符串常量.

-g

(gdb)在对象文件中嵌入诊断信息.该信息由符号调试器(如 gdb)使用.虽然后面使用调试器才用到,但包含该选项是一种好习惯.

-Idirectory

搜索标准位置之前,先在directory中查找include文件.多次给出该选项可以在多个目录下查找.

-larg

(首字母时小写字母l) 在/lib和/usr/lib目录中搜索名为linarg.a的库文件.如果找到该文件,gcc就直接在库内搜索需要的函数库.可将arg替换为搜索的库文件名.例如,选项-lm通常链接到标准数学库libm.a.该选项的位置很重要,通常它被放在命令行的末尾,可以多次使用该选项来搜索不同库.库按照它们在命令行上的顺序依次搜索.连接器使用库来解决命令行,库选项之前模块中未定义的符号.可使用-L选项添加其他的库路径来搜索libarg.a.

-Ldirectory

为了搜索用-l选项给出的库,向要搜索的目录列表中添加directory.在搜索库的标准位置之前搜索实用-L添加到列表中的目录.

-o file

(output) 对连接file得到的可执行文件进行命名,而不采用默认的a.out.

-On

(optimize) 尽量优化编译器产生的目标代码.n的值可以是0,1,2,或者3(如果为linux内核编译代码,n就可以是06),默认值为1.较大的n值具有较好的优化结果,但会增加目标代码量和gcc运行时间.实用-O0可以关闭优化功能.当使用gcc的-O选项时,很多相关的选项可以精确地控制优化类.参见gcc的info页以获得详细信息.

-pedantic

GNU C编译器接收的C语言包含一些标准ANSI C语言没有特性.使用该选项强制gcc放弃C语言的扩展,接收标准C语言的特性.

-Q

显示gcc编译的函数名和每次编译的统计信息.

-S

(suppress) 禁止编译过程中对源代码文件的汇编连接步骤.得到的汇编语言文件的扩展名为.s.

-traditional

该选项使得gcc只能接受传统Kemighan和Ritchie C编译语言具有的特性,从而使用gcc可以正确编译实用传统C(标准ANSI C语言之前的C)编译的老程序.

-Wall

该选项使得gcc在源文件中发现可疑的代码时给出警告.很多相关的选项可以用来更精确地控制警告信息.

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值