首页 > 代码库 > 运行库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