glibc版本查看_Linux开发必知内容整理 | libc、glibc和glib的关系

在进行Linux开发不可避免的要调用一些系统的API,我们经常开到的概念有诸如glibc、libc和glib等等。那么这些系统库之前的关系是什么样的呢?下面小编带大家了解一下这些库之前的共同点和差异,希望对以后的编程开发提供帮助。

5262e1bdb0b11dad97ccc03818fa8ecb.png

glibc 和 libc的关系

glibc 和 libc 都是 Linux 下的C函数库。libc是Linux下的ANSI C函数库;glibc 是 Linux 下的 GUN C函数库。

那么ANSI C和GNU C有什么区别呢?

ANSI C函数库是基本的C语言函数库,包含了C语言最基本的库函数。这个库可以根据头文件划分为 15 个部分,其中包括:

  1. :包含用来测试某个特征字符的函数的函数原型,以及用来转换大小写字母的函数原型;
  2. :定义用来报告错误条件的宏;
  3. :包含系统的浮点数大小限制;
  4. :包含数学库函数的函数原型;
  5. :包含执行某些计算 C 所用的常见的函数定义;
  6. :包含标准输入输出库函数的函数原型,以及他们所用的信息;
  7. :包含数字转换到文本,以及文本转换到数字的函数原型,还有内存分配、随机数字以及其他实用函数的函数原型;
  8. :包含字符串处理函数的函数原型;
  9. :包含时间和日期操作的函数原型和类型;
  10. :包含函数原型和宏,用于处理未知数值和类型的函数的参数列表;
  11. :包含函数原型和宏,用于处理程序执行期间可能出现的各种条件;
  12. :包含可以绕过一般函数调用并返回序列的函数的原型,即非局部跳转;
  13. :包含函数原型和其他信息,使程序可以针对所运行的地区进行修改。
  14. 地区的表示方法可以使计算机系统处理不同的数据表达约定,如全世界的日期、时间、美元数和大数字;
  15. :包含宏和信息,用于进行诊断,帮助程序调试。

GNU C函数库是一种类似于第三方插件的东西。由于 Linux 是用C语言写的,所以Linux的一些操作是用C语言实现的。因此,GUN 组织开发了一个 C 语言的库以便让我们更好的利用 C 语言开发基于 Linux 操作系统的程序。不过现在的不同的 Linux 的发行版本对这两个函数库有不同的处理方法,有的可能已经集成在同一个库里了。

查看当前系统的 glibc 版本的方法:

通过执行libc.so.6

切换到libc.so.6所在的目录,执行如下命令。

[root@itworld123]# ./libc.so.6GNU C Library (GNU libc) stable release version 2.28.Copyright (C) 2018 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 APARTICULAR PURPOSE.Compiled by GNU CC version 8.2.1 20180905 (Red Hat 8.2.1-3).libc ABIs: UNIQUE IFUNC ABSOLUTEFor bug reporting instructions, please see:.

执行ldd命令

[root@itworld123]# ldd --versionldd (GNU libc) 2.12Copyright (C) 2010 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.由 Roland McGrath 和 Ulrich Drepper 编写。

glibc 和 glib的关系

错误观点:GLib前面有个"g",所以认为glib是GNU的东东;同时认为glibc是GLib 的一个子集。其实,glib和glibc 基本上没有太大联系,可能唯一的共同点就是,其都是C编程需要调用的库而已。

GLib是Gtk+库和Gnome的基础。GLib是一个跨平台的、用C语言编写的五个底层库的集合,为GNOME所使用。其支持的平台包括Linux、Unix和Windows 等。GLib为许多标准的、常用的C语言结构提供了相应的替代物。GLib中包含了近二十种实用功能,从简单的字符处理到初学者很难理解的XML解析功能。

官方说明

关于Glib的官方说明:

GLib is a general-purpose utility library, which provides many useful data types, macros, type conversions, string utilities, file utilities, a main loop abstraction, and so on. It works on many UNIX-like platforms, Windows, OS/2 and BeOS. GLib is released under the GNU Library General Public License (GNU LGPL).

The general policy of GLib is that all functions are invisibly threadsafe with the exception of data structure manipulation functions, where, if you have two threads manipulating the same data structure, they must use a lock to synchronize their operation.

GLib is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system.

关于Glibc的官方说明

Overview:

Any Unix-like operating system needs a C library: the library which defines the ``system calls'' and other basic facilities such as open, malloc, printf, exit...

The GNU C Library is used as the C library in the GNU systems and most systems with the Linux kernel.

Project Goals:

The GNU C Library is primarily designed to be a portable and high performance C library. It follows all relevant standards including ISO C11 and POSIX.1-2008. It is also internationalized and has one of the most complete internationalization interfaces known.

History:

The history of Unix and various standards determine much of the interface of the C library. In general the GNU C Library supports the ISO C and POSIX standards. We also try to support the features of popular Unix variants (including BSD and System V) when those do not conflict with the standards. Different compatibility modes (selectable when you compile an application) allow the peaceful coexistence of compatibility support for different varieties of Unix.

其他说法

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

glibc是GNU组织对libc的一种实现。它是unix/linux的根基之一。

微软也有自己的libc实现,叫msvcrt 。

嵌入式行业里还常用uClibc ,是一个迷你版的libc 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

威纶触摸屏使用说明书_MODBUS通信之触摸屏与变频器通信知识分享(一)

今天跟大家分享一个有关于MODBUS通信的知识,使用触摸屏不经过PLC,直接对变频器或是仪表进行监控:这里面我们选择用西门子的SMART 700IE的触摸屏及台达VFD_M的变频器为例给大家进行介绍。需要完成这样的一个控制,需要掌握以下几个知…

反函数连续性定理 反三角_高中数学:三角函数诱导公式及诱导公式口诀

定义、定理、公式是学好数学的基础,一些常见的题型的解答方法和技巧也需要牢记于心,今天给大家介绍19种数学记忆方法,会让你学习数学变得轻松!1.口诀记忆法高中数学中,有些方法如果能编成顺口溜或歌诀,可以…

Linux系统常用的基本命令【转载CSDN象在舞】

本文主要介绍Linux中常用的基本命令,简单实用,以供大家参考,如有错误,欢迎大家指出。下面开始介绍。 一、查看哪个用户登录的系统 1、users命令 2、whoami命令或者who am i命令 二、查看哪些用户在系统上工作 1、who命令 2、w命…

swiper5 点击图换下一张_电商小牛教你如何选择点击率超同行三倍的爆品主图!...

当我们已经分析好了消费者的购物行为习惯,也把主图的设计原则做好了,接下来我们还需要做的就是如何合理布局主图。很多商家主图位置可能一半都没用,甚至很多商家就用了一张图位置,这是不可取的。现在很多消费者是直接看完主图就下…

iphone屏幕突然变暗_iPhone 玩游戏时屏幕突然变暗,来看看是什么原因?

有没有小伙伴的苹果手机遇到过这种情况,手机打着王者好好的屏幕突然变暗了,而且屏幕亮度调到最大也还是没有亮起来,这到底是怎么回事?后来我仔细研究了一下才知道这其中的原因,朋友们也来看看。一般手机屏幕突然变暗&a…

Linux的实际操作:Linux的分区

原理介绍: (1)对于Linux来说,无论有多少个分区,分配给哪一个目录使用,归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中的每一个分区都是用来组成整个文件系统的一部分 …

vscode如何连接新设备_台州要用“超级平台”连接300万台工业设备,成为全省新示范...

全省工业互联网平台推广会上台州工业互联网平台发布、7个工业互联网项目签约——“企业间一座座孤立的烟囱,通过数据‘联姻’打破了信息孤岛。”5月22日,在路桥召开的全省工业互联网平台建设推广会上,专家们这样形容正在发生的变革。工业互联…

Linux的实际操作:给Linux添加一块新硬盘

因为某种原因,Linux系统的一块硬盘已经用完了,现在需要新增加一块硬盘挂载到Linux文件系统上 案例:增加一块 2G的硬盘 sdb1,挂载到文件系统中新增的/home/newdisk文件目录下,后续通过newdisk就可以操控sdb1硬盘 如何增…

归并排序 java_马士兵说之归并排序

大家对于排序应该是挺熟悉的吧,马士兵老师特意为排序出了一波视频,当然文章是转自博客园的,马士兵老师的视频观看请点击下方的了解更多概要本章介绍排序算法中的归并排序。内容包括:1. 归并排序介绍2. 归并排序图文说明3. 归并排序…

tft lcd驱动参数详解_LED拼接屏和LCD拼接屏的区别

LED屏幕和LCD屏幕是每个人都经常听到的两个屏幕,但是每个人之间的区别尚不清楚。不认识的人可能会认为两者之间没有区别。让我们谈谈LED和LCD屏幕之间的区别:首先,什么是LED? LED是发光二极管,LED拼接屏是由发光二极管…

求有向图的简单路径_2020福建农信社招聘-关键路径

2020福建农信社公告暂未发布,预计于2020年1月发布公告,历年福建农信社笔试以纸考形式进行,同时笔试内容包含经济、金融、计算机、法律、财会、公基、三农、农信文化、普惠金融、市场营销、时政等部分,相对而言考试知识点较多&…

cad插件_CAD插件自动编号安装教程

插件下载[名称]:CAD插件-自动编号[大小]:3.67MB [语言]:简体中文 [安装环境]:Win7/Win8/Win10[支持版本]:CAD2004-2020[32/64位下载链接]:pan.baidu.com/s/1XACgkA4OTrsk08QdGQB9RQ[提取码]: 8327安装中有…

Nginx的初步安装

目录 Nginx的初步安装 1.使用远程连接工具连接Linux操作系统 2.因为是开源的,所以可以去官网直接下载 3.安装Nginx前需要安装一些相关的依赖包 第一步:(用第一种方式:wget的方式)安装pcre 第二步:安装…

苹果手机电越充越少怎么回事_手机充着电,电量缺越来越少是怎么回事?

手机充电状态下越充越少一般由以下几个方面原因造成:手机系统故障,因此导致电池电量显示出现问题。充电器出现故障。充电器和手机接触不良。手机电池出现问题。手机本身存在质量问题。解决方法:手机系统故障,因此导致电池电量显示…

串口助手驱动_STM32Cube22(补充) | 使用硬件I2C驱动OLED(SSD1306)

点上方蓝字关注我们每天都有好玩的东西等着你本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设驱动0.96OLED屏幕。1. 准备工作硬件准备开发板首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):OLED屏幕这里我使用的是0…

Nginx的开启和关闭

目录 Nginx操作的常用命令 1.首先进入Nginx的目录 2.查看Nginx的版本号 3.启动Nginx 4.关闭Nginx 5.重新加载Nginx Nginx操作的常用命令 1.首先进入Nginx的目录 /usr/local/nginx/sbin 2.查看Nginx的版本号 3.启动Nginx 查看进程状态:是否有nginx进程启动 4…

jq 通过标签名称获取标签_如何快速通过今日头条原创标签的审核?

拥有头条自媒体的作者越来越多,未来可能会有更多的人拥有自媒体平台,但真正能够获得平台授予的原创标签的作者,恐怕是少了许多,头条号对于原创标签的审核尤为严格,如何快速通过原创标签的申请,下面为大家分…

Nginx的配置文件

目录 Nginx的配置文件 1.找到Nginx配置文件的位置 2.Nginx配置文件组成 第一部分:全局块 第二部分:events块 第三部分:http块 (1)http 全局块 (2)server 块 Nginx的配置文件 1.找到Ngin…

C++为什么空格无法输出_OOP 面向对象编程:由 C 到 C++

作者:鲸90830链接:https://www.cnblogs.com/whale90830/p/10488595.html由C到COOP第一课C语言的局限C的特点C的程序特征C程序的结构特性C程序的编辑、编译和运行⭐C对C的补充C语言的局限类型检查机制相对较弱,使得程序中的一些错误不能在编译…

idea无法导入主题jar包_总结IDEA开发的26个常用设置

IDEA 软件设置Settings页面Settings是对软件本身的一些属性进行配置,例如字体 主题 背景图 插件等。如何打开Settings设置页面Settings设置页面结构详解结构Appearance & Behavior 外观和行为Keymap 快捷键Editor 编辑器设置Plugins 插件Version Control 版本控…