理解glib和glibc(libc.so.6)

glic、libc和glib的区别

libc 实际上是一个泛指。凡是符合实现了 C 标准规定的内容,都是一种 libc

glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护

Linux下面的标准c库不仅有这一个,如uclibc、klibc,以及上面被提到的Linux libc,但是glibc无疑是用得最多的

  • glibc 是 GNU 组织对 libc 的一种实现,是 unix/linux 的根基之一
  • 微软也有自己的 libc 实现,叫 msvcrt 。
  • 嵌入式行业里还常用 uClibc ,是一个迷你版的 libc

glibc在/lib(/lib32 /lib64)目录下的.so文件为libc.so.6

查看版本两种方式

ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.7) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

查看libc.so 获取版本号

root@localhost$ll | grep libc
-rwxr-xr-x  1 root root 2004160 Apr  7 01:24 libc-2.31.so*
lrwxrwxrwx  1 root root      12 Apr  7 01:24 libc.so.6 -> libc-2.31.so

root@localhost$ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 12 Apr 11 20:40 /lib64/libc.so.6 -> libc-2.26.so

root@localhost$/lib64/libc.so.6
GNU C Library (GNU libc) stable release version 2.26, by Roland McGrath et al.
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 7.3.1 20180712 (Red Hat 7.3.1-13).
Available extensions:
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        Native POSIX Threads Library by Ulrich Drepper et al
        BIND-8.2.3-T5B
libc ABIs: UNIQUE IFUNC
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

root@localhost$ldd  --version
ldd (GNU libc) 2.26
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

glib是GTK+的基础库,它由基础类型、对核心应用的支持、实用功能、数据类型和对象系统五个部分组成,可以在gtk 网站下载其源代码。是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API

GTK+是可移植的,当然glib也是可移植的,你可以在linux下,也可以在windows下使用它。

使用gLib2.0(glib的2.0版本)编写的应用程序,在编译时应该在编译命令中加入pkg-config --cflags --libs glib-2.0

编译安装glibc

/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。

/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。

/opt:用户级的程序目录,可以理解为D:/Software,opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。

/usr/src:系统级的源码目录。

/usr/local/src:用户级的源码目录

https://blog.csdn.net/qq_40827990/article/details/89295472

用gcc编译包含glib.h头文件的源程序

在编译之前首先确保在系统上安装了GLIB开发库

sudo apt-get install libglib2.0-dev

示例程序

#include  //这里的头部到底该怎么写,例如

int main(void)
{
    g_print("Hello, world!\n");
    return 0;
}

在命令行中使用以下命令来编译上述程序:

gcc main.c `pkg-config --cflags --libs glib-2.0` -o hello

在上面的行中,使用反引号(`)而不是单引号(')将pkg-config及其选项括起来。或使用:

gcc main.c $(pkg-config --cflags --libs glib-2.0) -o hello

Devhelp 是一个文档浏览器,是为了阅读用 gtk-doc 生成的格式的文档而设计的,gtk-doc 是构建 GTK+ 文档的标准工具,相关的项目.

使用下列命令安装devhelp,打开devhelp其中含有GLIB的参考手册

查看glib文档

安装帮助

sudo apt-get install libglib2.0-doc

可以在Devhelp中查看帮助文件。使用以下命令安装Devhelp

sudo apt-get install devhelp

单击Devhelp左窗格中的GLib参考手册,应显示文档的版本号,该版本号应与已安装的库的版本号相对应。还有两种其他方法可以确定库的已安装版本-使用pkg-config和按如下所述以编程方式进行确定。

查看版本

使用pkg-config

在终端窗口中输入以下命令将显示当前安装的GLib版本。

pkg-config --modversion glib-2.0

编译使用

gcc -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -lglib-2.0 -o hello hello.c

简洁命令

gcc main.c`pkg-config --cflags --libs glib-2.0` -o版本
gcc main.c $(pkg-config --cflags --libs glib-2.0)-o版本

pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息

pkg-config --libs --cflags能够给出,函数库的头文件和库的所有信息

你可能感兴趣的:(操作系统,linux,unix,服务器)