Linux的源码到目标程序的过程

1.基本概念

首先,从源码到目标程序有几个过程,第一,预处理,预处理指令的执行和宏展开,第二预编译,第三,编译,语法检测,程序优化,生成目标程序.o二进制文件,第四,链接,将多个目标程序.o和库链接成一个可执行程序文件。

2.gcc与g++

C语言的源程序文件  *.c  编译工具 gcc
C++语言的源程序文件 *.cpp 编译工具 g++

g++可用于.c也可用于.cpp。

gcc -E  *.c用于预处理,gcc -E *.c > test.txt 可在test.txt中查看预处理后的代码,例如

#define PI 3.14
int main()
{
     PI*PI;
     return 0;
 
}

经过预处理后,可在test.txt中看到

int main()
{
     3.14*3.14;
     return 0;
}

仅编译 :gcc -c *.c -o *.o

编译成汇编:gcc -S *.c -o *.s

链接:gcc 1.o,2.o -o *.exe

3.makefile

假设有a.c,b.c,d.c对应a.o,b.o,d.o,现在将3个.o文件链接在一起生成c.exe有两种方法

第一种

//目标    依赖
c.exe:a.o b.o d.o 
    gcc a.o b.o d.o -o c.exe
a.o:a.c
    gcc -c a.c -o a.o
b.o:b.c
    gcc -c b.c -o b.o
d.o:d.c
    gcc -c d.c -o d.o

第二种

//目标 依赖
c.exe: a.o b.o d.o
    gcc *.o -o $@   //$@就表示c.exe
%.o:%.c
    gcc -c $< -o $@

gcc不顶格,在将此文件放在工作目录下,在命令行中输入make就可完成多文档编译。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值