GLib-2.0库遵循LGPL协议,其源码可以从官方获取。
源码获取途径
最新的GLib-2.0库可以从GNOME官方的GitLab上获取:
https://gitlab.gnome.org/GNOME/glib
历史源码可从下面网站获取:
https://download-fallback.gnome.org/sources/glib/
本系列文章使用的GLib-2.0源码是GLib-2.56.4。
源码目录结构简介
下面是glib-2.56.4源码主要目录及重要文件的简介,有些目录或文件有删减。
glib-2.56.4
├── acglib.m4 // automake构建所需文件
├── acinclude.m4 // automake构建所需文件
├── aclocal.m4 // automake构建所需文件
├── AUTHORS // 作者
├── autogen.sh // automake自动执行脚本
├── build // 编译目录
│ ├── Makefile.am // automake构建所需文件
│ ├── Makefile.in // automake构建所需文件
│ └── win32 // win32编译目录
├── ChangeLog* // 变更记录(多个文件)
├── config.guess // config文件
├── config.h.in // config文件
├── configure // 一般情况下,直接执行本文件即可,不需要automake
├── configure.ac // config的automake文件
├── COPYING //版权
├── docs //官方帮助文档目录
│ ├── Makefile.in // 帮助文档编译所需文件
│ └── reference // 帮助文档实际目录
│ ├── gio // GIO帮助文档
│ ├── glib // GLib帮助文档
│ │ ├── glib-sections.txt // gtk-doc编译GLib帮助文档所需section
│ │ ├── html //GLib实际帮助文档目录,里面有一些列html文件
│ │ │ └── index.html // GLib帮助文档的索引地址,一般从这个地址开始阅读
│ │ ├── Makefile.in // 编译所需
│ │ ├── meson.build // meson构建系统所需文件
│ │ ├── resources.xml // 帮助文档所需资源文件
│ │ └── xml // 帮助文档的基本xml语法描述目录
│ │ ├── gtkdocentities.ent.in
│ │ └── meson.build // meson构建系统所需文件
│ ├── gobject // GOBJECT帮助文档
│ └── Makefile.in // 编译所需
├── gio // GIO源码目录
├── gio-2.0.pc.in // pkg-config所需文件
├── glib // GLib源码目录
│ ├── deprecated // 已废弃代码
│ ├── gnulib // GNU组织实现的一系列函数
│ │ ├── g-gnulib.h
│ │ ├── printf.h
│ │ ├── verify.h
│ │ └── xsize.h
│ ├── libcharset // 字符集
│ ├── Makefile.am // 编译GLib库所需automake文件
│ ├── Makefile.in // 编译GLib库所需文件
│ ├── meson.build // meson构建系统编译GLib库所需文件
│ ├── pcre // PCRE官方库,当使用--with-pcre=internal时,不再依赖外部PCRE库
│ ├── tests // GLib测试目录
│ │ ├── bookmarks // 标签解析测试例素材
│ │ └── markups // xml解析测试例素材
│ └── update-pcre // 升级PCRE库脚本,此目录可将PCRE升级到最新
├── glib-2.0.pc.in // pkg-config所需文件
├── gmodule // GModule目录
├── gobject // GLib-2.0 对象系统
├── gobject-2.0.pc.in // pkg-config所需文件
├── gthread // GLib-2.0 线程库
├── INSTALL // 安装说明
├── INSTALL.in // 安装相关
├── install-sh // 安装相关
├── m4macros // automake相关宏目录
│ └── glib-2.0.m4
├── Makefile.am // 编译GLib-2.0所需文件
├── Makefile.in // 编译GLib-2.0所需文件,用来生成automake文件
├── meson.build // meson构建系统所需编译文件
├── meson_options.txt // meson构建系统所需编译文件
├── NEWS* //最新消息
├── po // 国际化,
│ ├── en_GB.gmo // gmo是GNU Machine Object File的缩写
│ ├── en_GB.po // po是可移植对象(Portable Object)的缩写
│ ├── zh_CN.gmo // gmo文件一般与GNU gettext关联
│ └── zh_CN.po // po是文本文件,但一般不手写,常用GNU gettextize生成
├── README // 说明文档
├── tests // GLib-2.0测试例,注意与glib、gobject、gio各目录的测试例区分
│ ├── collate // 字符转换测试例素材
│ ├── Makefile.in // 测试例编译所需文件
│ ├── meson.build // 测试例meson方式编译所需文件
│ └── utf8.txt // utf8字符例子
└── win32 // windows开发环境下的工程文件,vs9到vs2015
├── Makefile.in
├── Makefile.msvcproj
├── vs10 // visual studio 2010工程目录
├── vs11 // visual studio 2011工程目录
├── vs12 // visual studio 2012工程目录
├── vs14 // visual studio 2014工程目录
├── vs15 // visual studio 2015工程目录
│ ├── glib.sln // vs 工程文件
│ └── glib.vcxproj // vs 工程文件
└── vs9 // visual studio 2009工程目录