当前位置: 首页 > news >正文

自己网站做访问统计代码新津县网站建设

自己网站做访问统计代码,新津县网站建设,微网站html5模板,wifi小程序搭建小解C语言文件编译过程【linux】 库动态库静态库 C语言文件 程序编译过程整体预处理编译汇编链接动态链接静态链接两种方法对比 库 看到标题是文件编译过程 但是开头却是库,这可不是挂羊头卖狗肉,而是因为库也是代码不可缺少的一部分,并且在…

小解C语言文件编译过程【linux】

    • 动态库
    • 静态库
  • C语言文件 程序编译过程
    • 整体
      • 预处理
      • 编译
      • 汇编
      • 链接
        • 动态链接
        • 静态链接
        • 两种方法对比

看到标题是文件编译过程
但是开头却是库,这可不是挂羊头卖狗肉,而是因为库也是代码不可缺少的一部分并且在编译过程中需要进行处理

那我们首先需要知道什么是库?

还记得我们写C语言时候,如果用到printf等函数,需要包上stdio的头文件吗
包上头文件后我们就能正常使用函数了
但是实际上,头文件中,只有函数的声明,而没有函数的实现和定义

那实现代码在哪呢?
就是在库中。

但是我们在写代码的过程中,并没有导入库
而导入库就是编译的过程中的部分了。

现在先来讲库的种类。

动态库

linux
动态库 .so
win
动态库:.dll

静态库

linux:
静态库 .a
windows
静态库:.lib

库的类型区分,主要体现在导入的方法中。

所以接下来进入编译过程的解读。

C语言文件 程序编译过程

大家都知道,对于计算机来说,只认识二进制码
那我们用了这么久的C语言,大家可能对C语言是如何转化成机器语言优点不太熟悉
所以这里就用linux系统,来带大家来认识一下C程序的编译过程

这里为了讲解就随便用了一个写了一个.C文件

#include<stdio.h>
#define max 10
int main()
{printf("%d\n",max);return 0;
}

整体

大致流程如图
在这里插入图片描述
接下来我们分别来看一下每个步骤:

预处理

预处理主要是将程序中的头文件展开以及宏定义和特殊符号进行处理

在linux中我们可以用

gcc -E test.c -o test.i

进行执行

这里的-E代表的意思是执行预处理指令
预处理结束后,会生成.i的文件
但是这里为了方便就直接重命名成test.i了
在这里插入图片描述
这里多了test.i文件
在这里插入图片描述
在test.i文件内部,我们能发现已经将stdio的头文件进行了展开
在这里插入图片描述
我们的写的代码还未进行处理

编译

编译:检查C语言程序语法,并将其转化为汇编语言。
可以用:

gcc -S test.i -o test.s

这个指令是要求test.c文件执行编译步骤

结束后会生成.s文件

在这里插入图片描述
我们通过cat指令
能看到test.c内部是汇编语言

汇编

汇编:将汇编语言转化为二进制码

通过一下代码执行至汇编部分

gcc -c test.s -o test.o

但是将代码转化为计算机认识的二进制码以后,也还没结束
还有最后一步。

链接

链接:将二进制码与程序所需的库相链接

库已经在上面进行了解释

gcc test.o -o test

这里就是最后一步了,成功生成了test的可执行程序

但是其实,链接还有两种情况,记得我们上面讲的静态库和动态库

链接的作用是将库和文件链接
那既然有两种库,那就有两种链接方式。

动态链接

动态链接就是链接动态库
动态库链接方式其实就是我们上面的

gcc test.o -o test

就是说默认的链接方式就是动态链接

那动态链接是如何使用库的呢?
通俗的讲就是:需要用到库的时候自己去库里面找

留下了函数对应的接口,之后需要使用库的内容的时候,直接去原库中去寻找。

静态链接

静态链接是与静态库相对应的
当我们使用静态库的时候就进行静态链接。
我们可以用

gcc test.o -static -o test

这个方式来设置为静态链接
我们可以看看静态链接和动态链接文件大小

在这里插入图片描述

我们看到动态和静态大小差异巨大
这是因为:静态链接方式是将整个静态库写入至代码中

可以说这多出来的800000位的大小都是库的大小

两种方法对比

了解两种的链接方式后,会发现他们其实优缺点还是挺明显的

静态链接
优点:方便移植,不需要搭建库(毕竟整个库都在文件中)
缺点:浪费资源(读写资源,磁盘空间等)
静态链接
优点:节省资源
缺点:使用时需要下载动态库

但是实际上使用的时候,可以在一个项目中按照需求进行选择
做到静态和动态链接搭配使用

http://www.yayakq.cn/news/990499/

相关文章:

  • 商丘网站建设方案wordpress 足迹地图
  • 宁夏建设工程质量安全监督网站河南郑州广告公司网站建设
  • 南京网站建设报价wordpress添加商品
  • 7星彩网站开发网页微信下载
  • 中国可信网站认证番禺网站排名优化公司
  • 中山网站建设开发分销渠道的三种模式
  • 服装 多语言 网站源码网站开发基础
  • 阿里云做网站送服务器吗优秀网站设计效果图
  • 宜宾网站开发招聘做网站用需要几个软件
  • 关键字搜索软件seo网络排名优化哪家好
  • 做阿里云网站北京建设网官网怎么查证书
  • 住宅房做旅店是什么网站免费软件站
  • 沁水网站建设网站的着陆页
  • 湛江网站建设优化建站wordpress php写接口
  • 舜江建设集团官方网站wordpress上传的图片 x
  • eclipse网站开发教程怎么处理脓包痘痘
  • 在哪个网站上做预收款报告网站建设有什么要求
  • 做包装盒效果图网站单位网站建设工作功劳
  • 泉州做企业网站安装系统后没有wordpress
  • 购物导购网站开发wordpress安装到子目录下
  • 百度网页版入口关键词优化app
  • 珠海网站建设技术支持一级a做爰片i免费网站
  • 适合大学生做的网站有哪些做欧洲电商看哪个网站吗
  • 绍兴公司网站建设 中企动力绍兴网站设计师认证培训
  • 东莞建设建网站广州关键词seo
  • 公司概况-环保公司网站模板万网免费域名
  • 经营类网站备案网站怎么做 凡科
  • 网站建设询价报告深圳网站建设深圳企业网站建设
  • 昆明做网站的公司有哪些四川今天刚刚发生的新闻
  • 工商注册在哪个网站建筑网校哪个比较好