Makefile 学习笔记(一)gcc编译过程

环境准备

.linux 系统(虚拟机)
VS code

linux 编译过程

预处理: 把.h .c 展开形成一个文件.宏定义直接替换 头文件 库文件 .i
汇编: .i 生成一个汇编代码文件 .S
编译: .S 生成一个 .o .obj 
链接:  .o 链接 .exe .elf
gcc c语言
g++ c++语言	

gcc的使用

#include "stdio.h"

#define P "hello gcc"
#define PRT printf

int main()
{
    PRT(P);
    return 0;
}
-E 预处理
 gcc -E hello.c -o hello.i 	 生成.hello.i 文件 

生成.i文件的时候,已经将宏定义的的数据替换好了
在这里插入图片描述

-S汇编
 gcc -S hello.i -o hello.S
	.file	"hello.c"
	.section	.rodata
.LC0:
	.string	"hello gcc"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$.LC0, %edi
	movl	$0, %eax
	call	printf
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609"
	.section	.note.GNU-stack,"",@progbits

-c 编译

gcc -c hello.S -o hello.o 生成一个二进制文件

-o 链接

gcc hello.o -o hello 链接成可执行文件

编译同目录下面的多个gcc文件
gcc 1.c 2.c 3.c -o hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值