Linux_ 4.1、Linux下使用gcc编译C程序



一、使用gcc命令来编译.c源程序

1、gcc编译过程:预处理->编译->汇编->链接

gcc支持的后缀

gcc常用选项

一步编译、连接

gcc无需加选项
对应gcc代码:gcc hello.c –o hello

1.1、预处理 -E

**作用:**对头文件和宏定义等进行处理

对应gcc代码:gcc –E hello.c –o hello.i

1.2、编译 -S

**作用:**检查代码是否有语法错误,并将其翻译成汇编语言

对应gcc代码:gcc –S hello.i –o hello.s

1.3、汇编 -c

**作用:**将编译阶段生产的汇编.s文件,处理为.o目标文件

对应gcc代码:gcc –c hello.s -o hello.o

1.4、链接

**作用:**将多个.o目标文件组装成最后的可执行文件

对应gcc代码:gcc hello.o -o hello

1.5、运行 ./文件名

对应代码:./文件名

Ps:gcc编译多文件举例gcc -o main main.c sub_add.c unsgn_pow.c -I/include -L. -lmymath
其中,-I ./include 告诉gcc在“./include”目录下搜寻头文件
**-L. **表示要链接的库,库名为libmymath.a,链接时写为-lmymath


二、gcc扩展

1、gcc——警告选项

使用举例

$ gcc –Wall warning.c –o warning
	warning.c:4 警告:“main”的返回类型不是“int”
	warning.c: 在函数“main”中:
	warning.c:7 警告:在无返回值的函数中,“return”	带返回值
	warning.c:5 警告:未使用的变量“tmp” 

2、gcc——优化选项

gcc通过编译选项“-On”来控制优化代码的生成(n是一个代表优化级别的整数,取值1-3),不同的优化级别对应不同的优化处理工作

  1. “-O1”主要进行线程跳转(Thread Jump)和延迟退栈(Deferred Stack Pops)两种优化
  2. “-O2”除了完成所有“-O1”级别的优化之外,同时还要进行一些额外的调整工作,如处理器指令调度
  3. -O3”则还包括循环展开和其他一些与处理器特性相关的优化工作
  • 使用优化选项的场合:程序发行
  • 不适合使用优化选项的场合:程序开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值