C的运行库

        今天看了一天的有关于运行库的知识,现在做下总结(只限于c):
   简单的说运行库里面包含了c语言写的程序要运行所需要的必备函数,比如在Main函数之前,c语言

就要调用一些运行库里面的函数然后对系统和全局变量进行初始化。一个用c语言写的程序可以没有一

些库,比如基本输入输出函数库,大不了在程序中不使用这些输入输出函数就行了,但是却不能没有运

行库,因为运行库里面包含了C语言要运行的必须函数调用,运行库是一种特殊的库,里面包含了系统

必须运行的信息,那么也就是说C语言里面的程序执行流程不止是从main函数开始的,因为在main函数

之前还有其他函数的调用,只是在main函数之前或者在main函数之后调用的函数在绝大多数程序里面都

是相同的,所以C语言就用运行库,在main函数的前面和后面自动的添加进入这些函数调用,省得大家

每次都要重写,太麻烦,那么也就是说如果我们自己写这些运行库函数的话,那么我们就可以不用运行

库吧。
   另外在C语言被发明的时候,并没有多线程这个概念,或者说这个概念还不成熟,所以C语言是单任

务运行的,也就是说它的运行方式是一条线,但是到了后来多任务处理的流行,使得C语言的单任务模

式特别不适合一些应用场合,所以这个时候编译器开发商就提供了自己的运行库,这种新的运行库支持

了多线程,多任务的概念。同时也支持标准的C语言运行库,也就是刚开始的运行库。
   对于编译器厂商新提供的运行库可以看成是原来的运行库的升级吧,比如原来的运行库只初始化了

一些环境变量,新的运行库不光初始化了原来的环境变量,而且它为了支持多线程,它有可能还初始化

了其他的环境变量,或者做了一些其他的优化操作。这样看来新的运行库能够完成原来的运行库的功能

而原来的运行库却不能完成新的运行库的功能。所以在一些开发环境里面,比如VC,你要用到新的技术

,那么你就要手动配置MS提供的新的运行库,才能使用,否则在连接的时候就会出错。
   另外我觉得运行库也只是库函数,只是程序运行必须的,那么它们作为库来用的话,也就是说在程

序进行连接的时候被调用,而程序的连接又分为两种,静态连接和动态连接,静态连接在Windows下就

是.lib,而动态连接在windows下就是.dll,两者的不同在于里面的二进制代码的加载时间不同,比

如.lib文件是在程序进行连接的时候就放进代码里面了,而.dll文件里面的二进制代码要在程序运行的

时候才动态加入。
   这里有一个问题就是,动态连接不止是微软才有,其他的系统下面或者开发环境下面也有,不过只

是不叫.dll。但是是一个概念。
   我在想如果库里面仅仅只是二进制代码,那么只要放到相同的硬件上,那么任何程序都可以去调用

并且执行它,只是需要知道它的调用方法,因为程序在运行的时候,代码和代码是没有差别的,只有不

同的指令体系结构的代码才不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值