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

海洋网络做网站不负责大连零基础网站建设培训哪里有

海洋网络做网站不负责,大连零基础网站建设培训哪里有,营销网站系统,搜索引擎有哪些技巧库是什么 库根据名字我们应该很容易理解,在我们日常生活种,包含库的东西有很多,像仓库,库房那些,库是拿来存放,方便管理东西的,在我们编程当中,库的定义也是如此 那么为什么要有库…

库是什么

库根据名字我们应该很容易理解,在我们日常生活种,包含库的东西有很多,像仓库,库房那些,库是拿来存放,方便管理东西的,在我们编程当中,库的定义也是如此

那么为什么要有库呢
假设我们要写一个非常简单的C程序,在屏幕上输出hello,world,实现这个功能很简单,我们只需要把头文件一包,代码一写,不到1分钟就可以实现,非常的迅速,这就是利用了标准输入输出库才让我们写代码的效率变得很高效
假设我们没有库,我们要实现这个功能就难多了,我们首先就需要去写一个能够实现在屏幕上输出东西的代码,才能进行我们的下一步,这就非常的麻烦,时间花费就会很大,如果每个程序员都要实现这个功能,那不是每个人都要去写一遍这个代码,而且每个人写的水平参差不齐,就会变得非常的麻烦

那么基于以上的问题不如我们去找一个写这个功能水平很高的人他来去写,我们就去调用他写的就行了,于是就有了库。
假设我们写代码就像修房子,没有库之前什么东西都要我们自己去弄,像水泥,砖头脚手架那些,而且每个人弄的标准质量还不一样,非常的麻烦,有了库之后,库就像一个可以提供高质量的砖头,水泥,脚手架,的一个地方,方便我们去调用他,提高我们建房子的速度。
在编程上的库也是如此,在编程上,库就是一套方法,或者数据集为我们的开发提供质量和保证提供基本接口,功能,加速我们二次开发
由此可见库是多么的重要

有了库的基本概念之后,我们又来看看什么是动态库,静态库

动态库

这里我们可以先写一段简单的代码来帮助我们理解

# include<stdio.h>
int main()
{printf("hello,world");return 0;
}

我们在linux下面用gcc来编译之后,输出可执行文件之后,我们用ldd,ldd 是 Linux 系统中的一个命令,用于打印程序或共享库依赖的共享库列表。这个命令可以显示一个可执行文件或共享库(共享库也叫动态库)需要哪些共享库才能正常运行,以及这些依赖库的路径 命令来查看一下看看我们程序是依赖了哪些动态库
在这里插入图片描述
我们来查看一下testout这个可执行程序运用了哪些动态库
在这里插入图片描述
我们发现这里有关libc.so.6这个库,这个就是C标准库 后面的.so后缀就代表这是一个动态库,如果是.a就是一个静态库在linux下是这样表示的,但在windows动态库是以.dll,结尾的我们看库是什么类型的就只需要把前缀(ldd)和后缀.so去掉就行了,去掉之后就显示一个C标准库
在了解了这个之后我们发现后面跟了一个地址,这个地址不难发现这是一个内存地址,这个内存地址代表了这个动态库在内存的哪个位置
所以我们发现动态库是存放在内存中的

那么我们程序运行的时候,他是怎么知道要跳转到这个库中去找相应的库方法的呢?
我们都知道程序要进行,预处理,编译,汇编,链接 生成可执行程序 这几个步骤
在我们的程序进行到链接这一步时,我们自己的程序调用了相应库里面的库方法,我们只需要把自己的程序和相应的库进行链接起来,让我们的程序能在库中找到相应的方法,这个可能有点抽象,下面这个图片可以更好的说明一下
在这里插入图片描述
我们在代入代码层面去看看
在这里插入图片描述
现在我们对动态库有了一个初步的理解了
在程序运行中时,动态库会加载到内存中,共多个程序调用,所以动态库也叫共享库
在这里插入图片描述

静态库

下面又来说说静态库是什么

静态库和动态库有一个很大的差别就是,静态库是每个程序独享的,动态是共享的
静态库,会在程序运行的时候,直接把库里面的实现方法给拷贝替换过来,而不是跳转地址,所以这样的程序占用空间就会非常大
我们在linux环境下继续来看看
在这里插入图片描述
在这里插入图片描述

第一个testout是调用的是动态库,第二个是静态库,可以很明显的看到静态库的所占空间比动态大得多
但是静态库有个好处就是,能让程序的健壮性更强,因为如果这个程序运行的全是调用的是静态库的话,自己就是一个独立的个体,不需要外界的帮助也能完成程序所要执行的任务。
静态库只用在链接的时候有用,一旦生成可执行程序,就不再需要了
当然在我们大多数的程序中,都是使用的是动态库
我们也可以在Linux下验证一下
就拿常用的指令来看看
我们在usr/bin目录下面随便用ldd看看
在这里插入图片描述
都是调用动态库的
同样在windows下面也是,像很多程序运行都会依赖类似于这些动态库
在这里插入图片描述
现在我们从技术层面上来再次理解一下库
现在我们来具体说明一下
来个例子看看
在这里插入图片描述
我们先创建这些文件
里面放相应的声明和实现
在这里插入图片描述
在编译一下,这样是可以编译的

在这里插入图片描述
假设,我不想让别人知道我的code.c里面实现的内容,就只留一个头文件声明的接口去供使用者调用,不想把源文件暴露给其他人,那该怎么办 我们就可以这样,我们把我们的code.c只编译成目标文件一个.o文件
像这样
在这里插入图片描述
然后再把我的code.c文件给删了
在这里插入图片描述
其他人的main函数里面就只有我的code1.c接口的调用方式,看不到我相关代码的内容
首先要编译main函数形成一个.o文件,然后再把两个.o文件链接成一个可执行程序
同样也能完成编译
在这里插入图片描述
我们上面就给了一个.o文件,假设有很多个.o文件实现不同的功能我们就需要打包了。
这样就有点类似于我们lib64文件夹下面的库文件了
在这里插入图片描述
然后当我们写程序的时候就会包相应掉库方法的头文件
在这里插入图片描述
最终实现我们程序的功能

我们上面的例子就像模拟一个库一样,通过自己的头文件去掉自己的库内容,不暴露源文件,最终实现程序的功能

结合上面的例子,我们可以得出一个结论:库的本质其实就是由一堆的.o文件打包成为的一个.a或是.so的文件有点类似于压缩包
这就是从技术层面去简单理解一下库
完。

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

相关文章:

  • 山东青岛网站设计公司linux 下载wordpress
  • 扁平化颜色网站企业微网站制作教程
  • 企划做网站网站内容的设计
  • 智能模板网站建设南江县规划和建设局网站
  • 网站被k后是怎样的邯郸网站制作费用
  • 网站开发选择题亚马逊推广
  • 池州网站开发界面设计是做什么的
  • 旅游网站的系统建设的意义做爰动态视频网站
  • 打鱼跟电子游戏网站怎么做wordpress文本块表格
  • 上海浦东做网站的公司昆明网站建设首选才力
  • 网投怎么做网站网站设计的目标
  • 网站源码调试地名网站建设方案
  • 有哪些网站是免费学做网页的wordpress 是什么
  • seo站内优化站外优化html简单网页代码作业
  • 搭建wordpress需要php环境吗上海有什么seo公司
  • 瓦房店网站制作免费大数据平台
  • 建站工具原理网络策划就业前景
  • 2014年网站设计趋势wordpress文章阅读更多按钮
  • wordpress智能小程序北京网络推广优化公司
  • 马鞍山网站建设制作电商网站是怎么建设的
  • 网站换网址了怎么找网站建设程序招聘
  • 外贸网站制作策划沈阳唐朝网络的服务内容
  • 网站开发中的qq登录凡科网站做的作品如何发布
  • 两学一做专栏网站电子商务网站建设模板代码
  • 免费的写作网站网页设计师英文
  • 网站设计主要包括哪些步骤黄岩区建设局网站
  • 网站连接跳转怎么做外包公司为什么没人去
  • 网站建设大约需要多少钱网站开发网站设计制作
  • 信息化建设官方网站引物在线设计网站
  • 网站优化毕业设计php mysql视频网站开发