C语言编译过程

C语言的编译就是将多个C文件编译成一个可执行文件,包含4个步骤:预处理 -> 编译 -> 汇编 -> 链接

使用示例

// mymath.h
#ifndef TESTC_MYMATH_H
#define TESTC_MYMATH_H

int add(int a, int b);
int sub(int a, int b);

#endif //TESTC_MYMATH_H
// mymath.c
#include "mymath.h"

int add(int a, int b) {
    return a + b;
}

int sub(int a, int b) {
    return a - b;
}
// main.c
#include <stdio.h>
#include "mymath.h"

int main() {
    printf("12 + 2 = %d", add(12, 2));
    printf("12 - 2 = %d", sub(12, 2));
    return 0;
}

  1. 预处理(预编译)

预处理将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后仍然是文本文件

gcc -E mymath.c -o mymath.i

gcc -E main.c -o main.i

  1. 编译

将经过预处理之后的程序转换成特定汇编代码,编译之后仍然是文本文件

gcc -S mymath.i -o mymath.s

gcc -S main.i -o main.s

  1. 汇编

汇编过程将上一步的汇编代码转换成机器码,这一步产生的文件(目标文件)是二进制格式

gcc -c mymath.s -o mymath.o

gcc -c main.s -o main.o

  1. 链接

链接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件

gcc mymath.o main.o -o main

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值