GCC常用的操作选项

2014年12月11日星期四

语言选项

-x language filename

解释:-x 选项用于指定所使用的编程语言,有c, c++ ,objective-c, c-header等等

举例:gcc –x c hello.c

-x none filename

解释:关闭对所使用语言的明确说明,是上面命令的反操作

举例:gcc -x c hello.cpp -x none hello2.c

预处理选项

-E

解释:预处理后就停止,不进行编译

举例:gcc –E main.c –o main.o

-C

解释:预处理时不去掉注释部分,和-E配合使用

举例:gcc –E –C main.c –o main.o

-MM

解释:显示适合make的规则,描述文件的依赖关系,隐含-E

-H

解释:显示程序中所有包含的头文件,并指出哪些是重复包含的

-Dmacro=defn

解释:定义宏macro的内容为defn, 相当于#define macro defn

举例:gcc –DN=10 main.c –o main

-Umacro

解释:取消宏macro

-dM

解释:输出有效的宏定义列表,必须和-E一起使用

汇编器选项

-S

解释:编译后就停止,不进行汇编

举例:gcc –S main.c –o main.s

(那么问题来了,怎么将生成的汇编语言变成机器语言呢?)

用as命令:as main.s –o main.o

连接器选项

-Wl,option

解释:把选项option传递给连接器。

举例:-Wl,-R /usr/local/lib,告诉程序,我的动态库在这个目录下面

目录选项

-I

解释:指定头文件的位置所在

-l

解释:指定库文件的名字

-L

解释:指定库文件的位置

举例:gcc -o  main main.c-L./lib -l My_Lib -I./include

警告选项

-w

解释:禁止所有的警告信息

-Wall

解释:打开编译器几乎所有的警告信息

调试选项

-g

解释:表示在生成的目标文件中带调试信息,gdb调试需要

优化选项

-O0

-O1

-O2

-O3

随着数字的增大,优化级别逐渐增大,-O0是不优化,-O3优化得最多

生成动态库文件选项

-fPIC

解释:使生成的对象模块采用浮动的(可重定位的)地址。

-shared

解释:指定生成动态连接库,linux专有

举例:gcc -Wall -fpic –shared source1.c source2.c –o libMy_lib.so

(生成静态库命令)

ar –r

解释:将所有的.o文件打包,生成静态库

举例:ar –r source1.c source2.c  libMy_lib.a

 

关于库文件需要注意的地方:

1、同时存在静态库和动态库时,默认使用动态库;

2、静态库在编译时要放在有main函数的那个文件后面,动态库在编译时没有位置要求。

3、如果没有指定路径,动态库在使用时才会报错。

4、指定动态库路径的方法:

       a)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib

       b)修改/etc/ld.so.conf文件

       c)编译时指定路径,通过-Wl,-R ./lib告诉连接器

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值