文章目录

  • 1. 官网
    • 1.1. What is glibc?什么是glibc
    • 1.2. Get started 开始
    • 1.3. Get Involved 参与其中
    • 1.4. Sources 源码
    • 1.5. Documentation 文档
    • 1.6. Report a bug 报告缺陷
  • 2. 社区wiki
    • 2.1. 贡献
    • 2.2. 资源
      • 2.2.1. 社区资源
    • 2.3. 内部文档
    • 2.4. 测试
    • 2.5. 调试
    • 2.6. 技巧和窍门

1. 官网

主页:https://www.gnu.org/software/libc

1.1. What is glibc?什么是glibc

GNU C 库项目为 GNU 系统和 GNU/Linux 系统以及许多其他使用 Linux 作为内核的系统提供核心库。 这些库提供了关键的 API,包括 ISO C11、POSIX.1-2008、BSD、特定于操作系统的 API 等等。 这些 API 包括诸如 open、read、write、malloc、printf、getaddrinfo、dlopen、pthread_create、crypt、login、exit 等基础设施。

GNU C 库旨在成为向后兼容、可移植和高性能的 ISO C 库。 它旨在遵循所有相关标准,包括 ISO C11、POSIX.1-2008 和 IEEE 754-2008。

该项目大约在 1988 年开始,至今已有 30 多年的历史。 您可以在 wiki 上查看完整的项目发布历史。

GNU C 库每 6 个月发布一次。

1.2. Get started 开始

GNU C 库提供了许多由 C 或 C++ 语言编写的程序直接使用的低级别组件。许多编程语言间接使用 GNU C 库,包括 C#、Java、Perl、Python 和 Ruby(这些语言的解释器、VM 或编译代码直接使用 glibc)。

版本可通过源分支检出 ( gitweb ) 和 tarball通过 ftp 获得。

  • tags:版本标签。
  • heads:分支(包括主线分支、版本分支等)。

构建和测试库可参考:https://sourceware.org/glibc/wiki/Testing/Builds

1.3. Get Involved 参与其中

在这里可以查看master todo checklist(主待办事项清单)和list of bugs(缺陷列表)。

1.4. Sources 源码

在这里可以获取glibc源码(代码仓和压缩包),也可以通过web页面查看代码仓详情。

1.5. Documentation 文档

在这里可以查看:glibc手册、API手册页、wiki、FAQ等。



1.6. Report a bug 报告缺陷

在这里可以提bug和查bug:

glibc的所有缺陷是通过Bugzilla平台进行管理:




评论中有关于该缺陷的描述和修复方法。

2. 社区wiki

主页:https://sourceware.org/glibc/wiki/HomePage

wiki中有大量关于glibc的介绍,用户一定要好好的利用,其中主要分了六个部分,本章主要介绍第五个部分,即 Development(开发)。

2.1. 贡献

这里介绍了:glibc编码规范和约定、贡献和提交者清单、维护者和新架构移植贡献指南等。

请注意,如果您希望为glibc做出贡献,您需要将想法和补丁发送到libc-help@sourceware.org以进行初步审查。也就是说,是通过邮件的方式来贡献代码的,相同于linux内核的贡献方式。

2.2. 资源

2.2.1. 社区资源

主要的社区资源如下:

  • 邮件列表
  • Glibc Git存储库信息
  • 弃用和删除过时的代码
  • Glibc语言环境/字符集指南
    提供了对语言环境的一般介绍以及关于如何使用语言环境(作为用户和开发人员)以及如何使用 GNU C 库创建和更新实际语言环境定义文件的更详细说明
  • API指南
  • Linux标准库
  • ABI列表
    描述了glibc 支持的(架构、ABI)组合。

2.3. 内部文档

  • 多线程安全
  • 使用errlist-compat
  • 动态加载器内部
  • 平台特定的标题
  • 指针加密
  • 符号版本控制
    • 如何对结构进行版本控制并创建防更改功能包装器。
  • 命名空间控制:
    • 保留供将来在每个标准 header 中使用的名称模式的有点过时的列表。
    • 何时使用__ 前缀符号
  • 条件代码:PIC、SHARED等。
  • 插件:使用插件目录
  • 对 thread_local 变量的析构函数支持
  • 环境变量指南
  • 系统调用包装器
  • 锁省略实现指南
  • NSCD 数据库文件布局
  • 改进 libm
  • 名称解析器
  • 用于查询线程属性(堆栈、tls 等)的 API
  • 与其他项目共享的源代码
  • 模糊测试库
  • Libmvec - 矢量数学库
  • POWER 架构 - 循环内调用函数的自动向量化
  • Malloc 内部结构
  • 可调参数

2.4. 测试

  • glibc 测试套件
  • 测试 GLIBC 构建
  • 针对 Gnulib 的测试套件进行测试
  • 查找和修复与 check-localplt 相关的测试套件故障
  • 为 glibc 内部编写白盒测试

2.5. 调试

  • GLIBC 开发的调试技术。
  • GLIBC ‘配置’ 调试(待办事项)。
  • GLIBC ‘make’ 调试(待办事项)。
  • 调试使用 GLIBC (todo) 的应用程序。
  • GDB“漂亮打印机”的使用和开发用于/与 GLIBC。

2.6. 技巧和窍门

  • 装载机提示和技巧。
  • 为 x32 编译。
  • 提供您自己的 FOO 版本。
  • 拦截系统调用并提供您自己的 FOO 版本的另一个秘诀(专门针对 Ubuntu Linux 系统的说明)。
  • Plash 项目有一些关于 GLIBC 的提示(主要是关于构建问题)。
  • rtldi可用于同时安装多个版本的 GLIBC(特别是多个版本的动态链接器,ld.so)。
  • 如何使用您自己的自定义 glibc 构建应用程序。
  • 如何使用secure_getenv

glibc 知:官方相关推荐

  1. glibc 知:构建2.34版本

    文章目录 获取版本 构建安装 测试 testrun.sh strace 获取版本 主页:https://www.gnu.org/software/libc 这里选择任意一个压缩包下载即可. 构建安装 ...

  2. glibc 知:测试套件

    文章目录 前言 测试套件目标 只测试一项测试 ABI检查 有关 make xcheck 特定测试的详细信息 编写测试用例 使用交叉编译器进行测试 已知的测试套件失败 abi-check bug-ate ...

  3. glibc 知:手册06:字符集处理

    文章目录 1. 前言 2. 字符集处理 2.1. 扩展字符简介 2.2. 字符处理函数概述 2.3. 可重启的多字节转换函数 2.3.1. 选择转换及其属性 2.3.2. 表示转换的状态 2.3.3. ...

  4. glibc 知:内容

    文章目录 1. 前言 2. 内容 2.1. Error Reporting 错误报告 2.2. Virtual Memory Allocation And Paging 虚拟内存分配和分页 2.3. ...

  5. glibc 知:手册05:字符串和数组

    文章目录 1. 前言 2. 字符串和数组实用程序 2.1. 字符串的表示 2.2. 字符串和数组约定 2.3. 字符串长度 2.4. 复制字符串和数组 2.5. 连接字符串 2.6. 复制时截断字符串 ...

  6. glibc 知:系统调用

    文章目录 1. 简介 2. 包装器 2.1. 汇编系统调用 2.2. 宏系统调用 2.3. 定制系统调用 3. 汇编系统调用详解 3.1. syscalls.list 3.2. assembly sy ...

  7. glibc 知:手册12:输入/输出流

    文章目录 1. 前言 2. 输入/输出流 2.1. 流 2.2. 标准流 2.3. 打开流 2.4. 关闭流 2.5. 流和线程 2.6. 国际化应用程序中的流 2.7. 按字符或行的简单输出 2.8 ...

  8. glibc 知:构建和测试

    文章目录 1. 前言 2. 构建 2.1. 只构建不安装 2.2. 构建并安装 3. 测试 3.1. 正常编译应用,在新glibc下运行 3.2. 基于glibc构建树进行编译应用 3.3. 基于gl ...

  9. glibc 知:ld.so

    文章目录 1. 名称 2. 概要 3. 描述 3.1. 动态字符串标记 4. 选项 5. 环境 5.1. 安全执行模式 5.2. 环境变量 5.2.1. LD_ASSUME_KERNEL(自 glib ...

最新文章

  1. GO语言教程1:Linux--debian/ubuntu下Go语言的安装
  2. div固定大小文字溢出自动缩小_CSS样式更改——框模型、定位、浮动、溢出
  3. 虚拟机ubuntu启动代码界面_Windows10下使用虚拟机安装Ubuntu18.04
  4. Linux下 SpringBoot jar项目后台运行、查看、停用
  5. 【转】ABAP在表VBAP和VBAK上增加新字段的标准BAPI
  6. 2019_7_31python
  7. Ubuntu下安装Pycharm及相关设置
  8. slideToggle使用
  9. HarmonyOS 项目实战之通讯录(Java)
  10. Linux -Spark安装
  11. 京东被优衣库打脸,阿里:怪我咯?
  12. ruby中的符号_Ruby中的凡人和不朽符号
  13. 雷电2接口_雷电3和TYPE-C都是干什么的?一文读懂全部
  14. LeetCode/LintCode 题解丨一周爆刷双指针:最小范围
  15. 电脑上怎样下载喜马拉雅里的 Mp3
  16. 足球比赛中的数据科学
  17. 从Excel导入数据到数据库
  18. BBR加速及错误处理
  19. java 学习网站_Java学习必不可少的十大网站
  20. Deep Reinforcement Learning with Knowledge Transfer for Online Rides Order Dispatching

热门文章

  1. 如何用Word整合项目计划书的各部分?
  2. FreeSWITCH 限制音视频会议最大参会人数
  3. 记cinder-volume服务down的解决方法
  4. 本篇讲述详解windows XP系统内核文件的文章主题
  5. Argo CD使用指南:如何构建一套完整的GitOps?
  6. Integer 与 Int 的区别
  7. 国内EDA软件公司有哪些?
  8. 循迹小车 。。。。2 为什么步进电机小车很少见呢
  9. 如何自己制作CHM文件
  10. 小米游戏本装苹果网卡BCM943224PCIEBT2BX