首页 > 代码库 > 运行库glibc

运行库glibc

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

         作为一个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标准库。

运行库glibc