glibc

本文介绍了Linux平台上的几种C函数库,包括广泛使用的glibc及其组成部分libc.so、libm.so、libpthread.so等,以及适用于嵌入式系统的uClibc和开机流程中使用的klibc。

glibc是linux上对标准库的实现,包含libc.so,libm.so,libpthread.so等库文件和头文件

12小时前

   C标准主要由两部分组成,一部分描述C的语法,另一部分描述C标准库。C标准库定义了一组标准头文件,每个头文件中包含一些相关的函数、变量、类型声明和宏定义。要在一个平台上支持C语言,不仅要实现C编译器,还要实现C标准库,这样的实现才算符合C标准。不符合C标准的实现也是存在的,例如很多单片机的C语言开发工具中只有C编译器而没有完整的C标准库。

  在Linux平台上最广泛使用的C函数库是glibc,其中包括C标准库的实现,所有系统函数。几乎所有C程序都要调用glibc的库函数,所以glibc是Linux平台C程序运行的基础。glibc提供一组头文件和一组库文件,最基本、最常用的C标准库函数和系统函数在libc.so库文件中,几乎所有C程序的运行都依赖于libc.so,有些做数学计算的C程序依赖于libm.so,以后我们还会看到多线程的C程序依赖于libpthread.so。以后我说libc时专指libc.so这个库文件,而说glibc时指的是glibc提供的所有库文件。glibc并不是Linux平台唯一的基础C函数库,也有人在开发别的C函数库,比如适用于嵌入式系统的uClibc, klibc

  在计算术语中, uClibc  是一个面向嵌入式Linux系统的小型的C标准库。最初uClibc是为了支持uClinux而开发,这是一个不需要内存管理单元的Linux版本,因此适合于微控制器系统(uCs;此处"u"是代表"micro"的μ的罗马化).  项目领导人是Erik Andersen.其他主要贡献者是Manuel Novoa III.许可证遵从GNU LGPL。uClibc是自由软件。  uClibc比一般用于Linux发行版的C库GNU C Library (glibc)要小得多,glibc目标是要支持最大范围的硬件和内核平台的所有C标准,而uClibc专注于嵌入式Linux.很多功能可以根据空间需求进行取舍。uClibc运行于标准的以及无MMU的Linux系统上,支持i386,x86 64,ARM (big/little endian), AVR32,Blackfin,h8300,m68k,MIPS (big/little endian), PowerPC,SuperH (big/little endian), SPARC,和v850等处理器。

    klibc ,一种C标准函式库,开发者为汉·彼得·艾文(Hans Peter Anvin)。它是自由软件,采用GNU 通用公众授权条款或BSD授权条款。它主要应用于Linux开机流程中,而且它也是早期用户空间(Early user space)与initramfs的一部份。在此时,这些应用程式无法使用glibc。它也适用于嵌入式系统的开发。 



原文地址: http://user.qzone.qq.com/65187279/blog/1331820952
05-07
### Glibc 库在 Linux 中的作用 Glibc 是 GNU C Library 的缩写,它是 Linux 系统中最核心的库之一。它提供了 POSIX 和 ISO C 标准定义的功能接口实现,使得开发者可以方便地编写跨平台的应用程序[^1]。 #### Glibc 的主要功能 Glibc 提供了许多基础服务支持,括但不限于以下几个方面: - **内存管理**:通过 `malloc`、`free` 函数提供动态内存分配和释放机制。 - **文件操作**:实现了标准 I/O 接口(如 `fopen`, `fclose`),以及底层文件描述符的操作(如 `read`, `write`)。 - **线程支持**:基于 POSIX Threads 实现了多线程编程的支持。 - **网络通信**:封装了套接字 API,用于 TCP/IP 协议栈上的数据传输。 这些基本组件构成了现代操作系统运行环境的基础框架[^3]。 #### 配置与编译自定义版本的 Glibc 如果需要安装不同版本或者定制化配置的新版 Glibc,则可以通过源码方式进行构建。例如,在指定目录下完成整个过程: ```bash mkdir build-glibc && cd build-glibc ../glibc-2.34/configure --prefix=/mydir make -j$(nproc) sudo make install ``` 此脚本会创建一个新的工作区来保存生成的目标文件,并最终把结果部署至 `/mydir` 路径中[^3]。 另外需要注意的是当切换到新版本时可能还需要调整系统的共享库路径变量以便让应用程序能够找到最新的动态链接器位置: ```bash export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/glibc-2.14/lib:/opt/glibc-2.17/lib ``` 这一步骤确保即使默认系统级设置未更改的情况下也能正常使用更新后的库集[^2]。 #### 如何验证当前使用的 Glibc 版本? 要确认正在运行环境中实际加载的那个 GLibc 版本号可利用如下命令行工具查询: ```bash ldd --version | head -n1 ``` 该方法返回的信息通常含了确切标签名及其关联日期戳记等内容[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值