GCC

程序的流程:

源代码(.c) 预处理   编译   汇编  链接  可执行文件

文件后缀介绍:

.c C原始程序

.C /.cc/.cxx   C++原始程序

.m Objective-C原始程序

.i  已经预处理的C原始程序

.ii 已经预处理的C++原始程序

.s/.S 汇编语言原始程序

.h 预处理文件(头文件)

.o 目标文件(可执行文件)

.a/.so (库文件)

程序预处理:
gcc -o t.i t.c -E
程序编译,生成汇编代码
gcc -o t.s t.i -S
将汇编代码生成可执行文件
gcc -o t.o t.s


链接:

gcc在编译的时候默认使用动态链接库,编译链接时并不把库文件的代码加入到可执行文件中,而是在程序执行的时候动态加载链接库,这样可以节省系统开销。

当头文件与gcc不在同一目录下要用-Idir编译,它是指头文件,而添加库文件时需用-Ldir参数

在include语句中,“<>”表示在默认路径“/usr/include”中搜索头文件,引号""表示在本目录中搜索。

Linux下的库文件命名时有一个规定:必须以l、i、b三个字母开头,因此,在用“-l”指定链接库文件时可以省去l、i、b三个字母。也就是说“-llibsunq”有时候写成“-lsunq”。

如果要引用的动态库在/lib/libm-2.3.2.so:00008610 W 中

去掉 lib,去掉后面的版本号,就是m

所以可以gcc -o main.o main.c -lm

参数:

-c  只编译不链接

-S只编译不汇编

-E只进行预编译

-g 在可执行程序中包含调试信息

-o file 将文件输出到file当中

-v显示GCC版本信息

-I dir 在头文件的搜索路径中添加dir目录

-L dir 在库文件的搜索路径中添加dir目录

-static 链接静态库

-llibary 链接库名字为libary的库文件

GCC 编译器的主要参数

-ansi支持符合ANSI的C程序

-pedantic  允许发出ANSI标准所列的全部警告信息

-pedantic-error  允许发出ANSI标准所列的全部错误信息

-w 关闭所有告警

-Wall 允许发出gcc 提供的所有有用的警告信息

-werror 把所有的告警信息转化为错误信息,并在告警发生时终止编译


GCC还可以优化代码

gcc -o main.o main.c -O2

-On    n代表优化的级别,n越大,优化的级别越大,速度也就越快

•优化虽然能够给程序带来更好的执行性能,但在一些场合中应该避免优化代码。
1.程序开发的时候。
2.资源受限的时候。
3.跟踪调试的时候。 



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值