运行库glibc

    运行时库(Runtime Library),可能某些和我同样的初学者不是很了解这个概念,可是运行时库有着十分重要的做用。linux

    下面来一段维基百科的解释:程序员

    运行时库(runtime library,又称运行期库),在计算机程序设计领域中,是指一种被编译器用来实现编程语言内置函数以提供该语言程序运行时(执行)支持的一种特殊的计算机程序库。这种库通常包括基本的输入输出或是内存管理等支持。它是一群支持正在运行程序的函数,与操做系统合做提供诸如数学运算、输入输出等功能,让程序写做者不须要“从新发明轮子”,并善用操做系统提供的功能。 运行时库由编译器决定,以面向编程语言,提供其最基本的执行时须要。好比Visual Basic须要复杂的运行时库支持而C的运行时库则相对简单。固然这仍是由编译器厂商决定的。运行时库中的函数可能对程序员透明,也可能不透明。这也是由编译器厂商忖度语言执行环境的需求而决定的。 早期的运行期库(例如Fortran)提供了数学运算的能力。其余语言增长了诸如垃圾回收的先进功能,一般用于支持对象数据结构。 许多近代语言设计了更大的运行环境并添加更多功能。不少面向对象语言也包含了分派器与类读取器。Java虚拟机(JVM)即是此类的典型运行环境:它也在运行期直译或编译具可携性的二进制Java程序。而.NET架构也是另一个运行期库的实例。 异常处理(Exception handling)是专门处理运行期错误的语言机制,使程序员能够彻底捕捉非预期错误,或没有适当处理的错误结果。 动态连接库或静态连接库与运行时库的分类角度不一样,不得相提并论。编程

         做为一个C语言开发者,你是否想过,咱们常常所使用的printf,memset等函数,其功能是谁帮咱们实现的?又是如何作到能够在不一样平台上兼容的?数据结构

这一切都是运行时库的默默支持。架构

         任何一个C程序,它的背后都有一套庞大的代码来进行支撑,以使得该程序能正常运行。这套代码至少包含入口函数,及其所依赖的函数所构成的合集。编程语言

固然,它还理应包括各类标准库函数的实现。这样一个代码集合称之为运行时库。函数

         一个C语言的运行库,至少包含如下功能:操作系统

         --启动与退出:包括入口函数及入口函数所依赖的其余函数等线程

         --标准函数:由C语言标准规定的C语言标准库所拥有的函数实现设计

         --I/O:I/O功能的封装和实现,例如fopen等函数

         --堆:堆的封装和实现

         --语言中特殊功能的实现;调试代码的实现

        

         在这些运行库的组成部分中,C标准库占了大部分且大有来头。当咱们使用printf,fread等标准库中的函数,在不一样平台中移植代码时就无需考虑兼容性,

由于标准库中的函数实现其实是和不一样平台绑定的,标准库就相似于C程序和不一样的操做系统平台间的抽象层,它将不一样操做系统平台的系统API封装成一样

功能的函数实现。

         在Linux系统下,咱们使用的运行库一般是glibc(GNU C Library),这是一个GNU旗下的C标准库。实际上glibc是C标准库的超集,即对C标准库进行了一

些扩展,好比线程操做并不是是标准的C运行库中的一部分,可是glibc支持了,即pthread库中的pthread_create等函数。

         在嵌入式linux系统中,为了节省空间,咱们会使用uClibc运行库,这是一个面向嵌入式linux操做系统的小型C标准库。

         小结:运行时库其实本质是个就是个库,多是动态的也多是静态的,之因此称之为运行时库主要是由于库所提供的函数功能,好比提供基本的标准输入输出和内存管理,数学计算等许多底层功能,是程序运行时的底层支持。

      换言之,若是你为某系统开发了一个库,实现了基本标准输入输出,内存管理,数学计算等功能,其余应用在使用底层功能时能够直接调用库函数,那么你的这个库就是运行时库。运行时库使咱们从重复造轮子中解放出来。

相关文章
相关标签/搜索