gcc编译器

gcc编译器

一、准备

1.安装gcc
	sudo apt-get install gcc
	
2.版本查询
	gcc -v
	
3.使用
	1> gcc *.c  // 默认a.out
	2> gcc *.c -o 指定名 // 指定生成对应名
    
4.配置文件
    /lib/x86_64-linux-gnu/ld-2.23.so*  

二、分区

.text 程序上下文(程序指令区)	
	编译后函数的指令集(main,自定义函数,只读不写)
	
.rodata 常量数据区
	存放程序中的字符或字符串,数字常量(只读不写)
	
.data 已初始化数据区
	所有静态变量和已初始的全局变量
	
.bss 未初始化数据区
	未初始化的全局数据

三、编译流程

(一)预处理
	格式: 
		gcc -E *.c(源文件) -o *.i(预处理文件)
	流程完成的任务:
		1.检查预处理指令是否正确
		2.处理预处理指令
			宏替换(#define)
			条件编译(#if #ifdef)
			导入头文件(#include)
			
(二)编译
	格式:
   		gcc -S *.i(预处理文件) -o *.s(汇编语言文件)
    流程完成的任务:
		1.检查[C语言语法
		2.把c语言代码编译成汇编语言代码
		3.进行简单分区(.rodata .text)
		
(三)汇编
	格式:
		gcc -c *.s(汇编文件) -o *.o(目标文件)
	流程完成的任务:
		1.将汇编指令编译成二进制机器指令
		2.名称统一处理
		3.继续分区(.data .bss确定了指令之间的偏移量)
	反汇编指令: 
		gcc objdump -D *.o > *.s
		
()链接
	格式:
    	gcc *.o(目标文件) -o *(可执行文件)
	流程完成的任务:
		1.加载系统库文件(静态库),编译器对应用程序初始化
		2.详细分区(确定逻辑地址)

四、常用的一些参数

1.-Wall 
	显示所有警告内容 

2.-O 
	编译时进行优化
		-O0,-O1,-O2,-O3 n级优化

3.-g 
	加入gdb调试

4.-l 
	加载库/lib
  	-lm加载数学库
  		/lib/x86_64-linux-gnu/libm.so.6
 	-lpthread 加载线程库
 		/lib/x86_64-linux-gnu/libpthread.so.0
	-lcrypt加载md5加密库
		/lib/x86_64-linux-gnu/libcrypt.so.
		
5.-L
	指定库文件所在路径

6. -I
	指定头文件路径 

7.多文件联编:
	gcc fun.c hello.c -o hello
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值