编译过程2

编译过程

编译过程就是将高级语言写的源代码程序编译成机器可识别的可执行程序。主要要经历编译、汇编、链接三个过程。在Linux系统中,编译阶段,gcc编译器编译器会将C语言写好的源代码文件,通过词法分析、语法分析、语义分析编译成汇编代码。汇编代码要根据不同的平台确定,MIPS、X86、ARM不同的体系架构的汇编代码各不相同。汇编阶段,Linux系统默认的Binutils中自带AS汇编器,汇编器将汇编代码,转义成二进制目标代码,每条汇编语言的代码要根据操作码和操作数进行二进制转化。在链接过程,Binutils中ld链接器,会链接到Glibc函数库里面的库文件。
在这里插入图片描述

ld链接过程

在Linux系统中,对于/bin目录下的二进制可执行程序,使用ldd命令查看二进制文件的链接库文件。
例子:

ldd /bin/make

结构:

库文件名字 => 存放位置(地址)

在执行make命令时,ldd链接器会去寻找/lib64/ld.so.1库文件,由ld.so.1库文件找到make需要的引用到的库文件。
在这里插入图片描述

修改ld的链接库

打开/etc/ld.config的文件修改后使用将库文件缓存到/etc/ld.so.cache以供使用,在源代码包编译过程中如果修改ld的链接库文件,会中断正常编译。

/sbin/ldconfig -v
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值