查看当前系统的glibc版本

2023-05-16

有时我们经常需要查看当前系统的glibc版本,可以这样查看:

/lib/libc.so.6

有时:/lib/x86-64-linux/libc.so.6

把这个文件当命令执行一下

为什么这个库可以直接run呢?原来在libc的代码中有一点小手脚:

Makerules:586:LDFLAGS-c.so += -e __libc_main
csu/version.c:71:__libc_main(void)
void 
__libc_main(void)
{
    __libc_print_version();
    _exit(0);
}

或者:

因为ldd命令也是glibc提供的,所以也能查看

ldd --version

glibc是什么,以及与gcc的关系?

glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api(应用程序开发接口),几乎其他任何的运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现,主要的如下:

(1) string,字符串处理

(2) signal, 信号处理

(3) dlfcn, 管理共享库的动态加载

(4) direct,文件目录操作

(5) elf, 共享库的动态加载器,也即interpreter

(6) iconv,不同字符集的编码转换

(7) inet, socket接口的实现

(8) intl, 国际化,也即gettext的实现

(9) io

(10) linuxthreads

(11) locale, 本地化

(12) login, 虚拟终端设备的管理,及系统的安全访问

(13) malloc,动态内存的分配和管理

(14) nis

(15) stdlib, 其他基本功能

gcc是编译器,基本上Linux下所有的程序(包括内核)都是gcc编译的,libc当然也是。

gcc和libc是互相依赖的两个软件,它们合作的方式类似Linux系统的“自举”。先在一个可以运行的带有老libc和gcc的系统上,用老gcc编译出一个新版本的gcc+老libc,再用这个新gcc编译出一个新gcc+新libc,再用这套东西编译整个新系统。

 

glibc版本查看:

4.9. How can I find out which version of glibc I am using in the moment?

{UD} If you want to find out about the version from the command line simply run the libc binary.

This is probably not possible on all platforms but where it is simply locate the libc DSO and start it as an application.

On Linux like /lib/libc.so.6 This will produce all the information you need. What always will work is to use the API

glibc provides. Compile and run the following little program to get the version information:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include <stdio.h> #include <gnu/libc-version.h> int main (void) { puts (gnu_get_libc_version ()); return 0; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This interface can also obviously be used to perform tests at runtime if this should be necessary.

Just execute:

ldd --version

which comes with glibc package

转自:https://my.oschina.net/acmfly/blog/77211

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查看当前系统的glibc版本 的相关文章

  • 打开 O_CREAT | Linux 中 NFS 上的 O_EXCL?

    当在 Linux 2 6 内核和 NFSv3 中时open fname O CREAT O EXCL 生效了吗 目前的规范open 2 系统调用文档 http www kernel org doc man pages online page
  • 如何使用与平台无关的方法获取 C 中的执行程序目录?

    我在 Linux 上为 unix 和 win32 在每个构建时交叉编译 平台开发我的应用程序 所以一个随时可用的函数会很好 我正在使用具有以下功能的glibgchar g get current dir void 函数并返回当前目录 但我真
  • debian docker 上的 GLIBC 不兼容

    我正在尝试构建一个以 rust rocksdb 作为依赖项的 Rust 应用程序 使用最新的 rust docker 映像进行编译 然后将二进制文件移动到 debian 这就是我的 Dockerfile 的样子 FROM rust 1 61
  • Cygwin 不支持 glibc

    Cygwin 常见问题解答包含以下 glibc 在哪里 的信息 Cygwin 不提供 glibc 它使用 newlib 来代替 它提供了很多 但不是全部 相同的功能 将 glibc 移植到 Cygwin 会很困难 我很惊讶并检查了发布包 因
  • 修复了各种系统上的 CHAR_BIT?

    我对 limit h 中的 CHAR BIT 感到困惑 我读过一些文章说宏 CHAR BIT 是为了可移植性 在代码中使用宏而不是像 8 这样的幻数 这是合理的 但是limits h来自glibc headers 它的值固定为8 如果gli
  • 是否有在 docker alpine linux 基础映像上设置 glibc 的最佳实践?

    是否有在 docker alpine linux 基础映像上使用正确路径设置 glibc 的最佳实践 以便任何生成的进程都可以正确引用已安装 libc 库的位置 就在这里 我使用了定制的 glibc 在其上安装了 JRE 你可以找到它her
  • 强制 free() 将 malloc 内存返回给操作系统

    似乎即使在我释放了由 分配的 Linux 进程的所有内存之后malloc 内存仍为进程保留 不会返回给操作系统 Running valgrind massif默认情况下 工具不会显示任何泄漏 Running valgrind with pa
  • GCC 如何自动知道包含 glib 库?

    我用 C 语言编写了一个简单的程序 它使用glib h 但是当我编译它时 我收到如下错误 gcc test c o test test c 3 18 fatal error glib h No such file or directory
  • GDB 单步执行动态链接器(ld.so) 代码

    我想在我的正常使用中使用 ld so 的代码c代码 我正在尝试通过 GDB 中的代码流TUI当您单步执行代码时 您可以看到源代码和汇编代码 为此我还安装了libc dbg binutils source来自 ubuntu 包管理器的包 GD
  • 如何将 C/C++ 应用程序移植到旧版 Linux 内核版本

    好吧 这只是一个有趣的练习 但是为一些较旧的 Linux 系统编译程序不会太难 不是吗 我可以访问几个运行 Linux 的古老系统 也许看看它们在负载下的表现会很有趣 举个例子 我们想要使用一些线性代数Eigen http eigen tu
  • ubuntu 中的 libc 还是 glibc?

    我对这些库有点困惑 我现在在 Ubuntu 上工作 我使用 g 5 我看到我的应用程序链接在 libc so 中 它是Ubuntu的C标准库的实现吗 和glibc有区别吗 ldd application exe libc so 6 gt l
  • Fedora 28 / GLIBC 2.27 libm.so.6 logf() 和 powf() c++

    我确信其他 Fedora 28 用户会知道 该操作系统的 glibc 最近已更新为 glibc 2 27 除此之外 2 27 还添加了 logf 和 powf 的新实现 这导致我的应用程序无法在旧版 glibc 的发行版 例如 Debian
  • Conda报告有冲突,但似乎没有冲突

    我一直在努力更新pyqt到最新版本 但由于包冲突而失败 我尝试更新的包在这里似乎无关紧要 从我最后附上的以下消息可以明显看出 glibc已安装版本 2 35 所有包都需要glibc2 17 或更高版本 所以没有冲突 但是拒绝安装 那么 这个
  • -ffast-math (-ffinite-math-only) 和 glibc 2.31 的链接错误

    最近 glibc 即 glibc 2 31 包含在 Ubuntu 20 04 中 似乎删除了诸如 exp finite 使用gcc的选项编译时使用了这些函数 ffinite math only or ffast math 这会启用上述选项
  • 系统调用位于 glibc 源代码中的哪里

    所以我正在查看 linux glibc 源代码 但我没有看到它实际上在哪里做了任何事情 以下内容来自io chdir c但它表明了许多源文件 这里发生了什么 显然我错过了一些东西 秘密是什么 它在哪里进行系统调用或实际执行某些操作 stub
  • GCC中strlen()的实现在哪里?

    谁能指出我的定义strlen 在海湾合作委员会 我已经 grep 4 4 2 版本大约半个小时了 同时疯狂地谷歌搜索 我似乎找不到在哪里strlen 已实际实施 你应该在 glibc 中查找 而不是 GCC 它似乎是在strlen c 这是
  • 静态链接到动态库。 glibc

    所以 我遇到一个问题 一台机器上有两个版本的 GCC 3 4 6和4 1 这是由于新软件的一些依赖性问题 需要 glibc 4 1 当我将这个新软件与 4 1 库链接时 它链接得很好 但是 当执行软件时 它找不到该库 因为它正在我的 LD
  • 未找到 GLIBCXX_3.4.15、GLIBC_2.15 和 GLIBC_2.14 - Centos 6.5

    我正在尝试运行一个应用程序 但我得到 usr lib64 libstdc so 6 VERSION GLIBCXX 3 4 15 not found lib64 libc so 6 VERSION GLIBC 2 15 not found
  • 如何在 Debian 上升级 glibc?

    我听说我可以使用apt get install libc6 但我需要向 etc apt sources list 添加一些内容才能接收最新的 glibc 版本 我应该怎么办 我能够安装libc6 2 17 in Debian Wheezy通
  • pthread_cond_broadcast 被 dlsym 破坏了?

    我正在尝试使用 LD PRELOAD 机制插入对 pthread cond broadcast 的调用 我插入的 pthread cond broadcast 函数只是调用原始的 pthread cond broadcast 然而 对于一个

随机推荐

  • 使用CocoaPods过程中的几个问题

    当把CocoaPods生成的workspace移动到上层目录时 xff0c 需要改下Pods xcconfig和工程里的一些设置 xff0c 就通常没什么难度 当遇到这个问题时 xff1a Could not automatically s
  • 仿网易云音乐的播放进度条

    仿网易云音乐的播放进度条 xff0c 有三种状态 xff1a 播放 暂停和拖动 xff0c 只是实现了动画和主要的交互逻辑 xff0c 其他细节 xff08 如暂停音乐的播放等 xff09 还需要自己完善 xff1a DKPlayerBar
  • 用 Houston 在本地调试远程通知

    Houston 的背景 Houston 在 GitHub 上的地址 xff1a https github com nomad Houston xff0c 作者又是Mattt Thompson xff0c 简直是惨无人道啊 xff0c 又高产
  • 如何设计一个 iOS 控件?(iOS 控件完全解析)

    代码的等级 xff1a 可编译 可运行 可测试 可读 可维护 可复用 前言 一个控件从外在特征来说 xff0c 主要是封装这几点 xff1a 交互方式显示样式数据使用 对外在特征的封装 xff0c 能让我们在多种环境下达到 PM 对产品的要
  • 蛋花花分享人工智能概念的诞生与发展

    蛋花花分享人工智能概念的诞生与发展 xff01 如今人工智能非常的火 xff0c 在各行各业都有突出的变现 xff0c 让人期待它未来的发展 蛋花花认为了解人工智能向何处去 xff0c 首先要知道人工智能从何处来 1956年夏 xff0c
  • 用JFreeChart 生成报表

    JFreeChart是JAVA平台上的一个开放的图表绘制类库 它完全使用JAVA语言编写 xff0c 是为applications applets servlets 以及JSP等使用所设计 JFreeChart可生成饼图 xff08 pie
  • Mac原生字典支持的词典

    一共十八部词典 xff0c 见下 xff1a 打了一个包 xff0c 有700多M xff0c 在CSDN没有权限上传这么大的文件 xff0c 故上传到115上 放到 Library Dictionaries 目录中即可 下载地址
  • NSAttributedString 详解

    NSAttributedString可以让我们使一个字符串显示的多样化 xff0c 但是目前到iOS 5为止 xff0c 好像对它支持的不是很好 xff0c 因为显示起来不太方便 xff08 至少没有在OS X上方便 xff09 首先导入C
  • ftp三种用户权限设置

    修改配置文件vsftpd conf Vi etc vsftpd vsftpd conf 修改匿名用户为禁止 2在禁止登录名单里删除root vi etc vsftpd user list vi etc vsftpd ftpuser 然后按d
  • 常见的socket出错总结

    常见错误 ECONNREFUSED 111 没有这个端口 EAGAIN 11 buff已满 EPIPE 32 客户端断掉了 ECONNRESET xff08 104 xff09 客户端先可以正常连接服务端 xff0c 并可以进行数据收发 x
  • CentOS-8中安装JDK 1.8

    备忘录 xff1a 喜欢 xff0c 即可 xff0c 无它 本例环境 xff1a 操作系统 xff1a CentOS 8 1 1911 x86 64 dvd1 安装包 xff1a jdk 8u251 linux x64 rpm 远程连接工
  • Android 系统(125)---Android通过Dialer实现暗码启动

    Android通过Dialer实现暗码启动 目前接触比较多的就是通过dialer应用来启动 触发暗码 本文以Dialer为例 xff0c 1 经过调试定位 xff0c 发现拨号盘接对应的Activity为DialtactsActivity
  • 阿里程序员常用的 15 个高效工具,大部分已开源!

    阿里程序员常用的 15 个高效工具 xff0c 大部分已开源 xff01 阿里将自身在各类业务场景下的技术积淀 xff0c 通过开源 云上实现或工具等形式对外开放 xff0c 本文将精选了一些阿里巴巴的开发者工具 xff0c 希望能帮助开发
  • Linux域名解析(DNS)

    DNS简介 域名系统 xff08 英文 xff1a Domain Name System xff0c 缩写 xff1a DNS xff09 xff0c 使用应用层协议 xff0c 是互联网的一项服务 它作为将域名和IP地址相互映射的一个分布
  • redhat6.7系统突然异常死机问题处理

    redhat6 7正常使用过一段时间之后异常死机 xff0c cat var log messages查看日志没有明显的error报错 xff0c 看带外管理日志发现是系统的问题 xff0c 后来通过修改grub conf配置解决了 xff
  • 下载并构建PX4

    根据官方的文档 xff0c PX4下载和构建的方式有两种 xff1a Linux系列的Console模式 xff08 当然也支持Windows下的MINGW32 xff09 和Windows模式 在Windows平台下 xff0c 我们习惯
  • 又是一年年终时...

    今年的第一天 xff0c 也就是 2009 年的第一天 xff0c 我用一个懒觉迎接了 2009 xff0c 整整睡到了中午 11 30 才醒 新一年初 xff0c 也就是明天 xff0c 我决定用早起来迎接 习惯了晚上学习 xff0c 早
  • 前端传值(枚举类接收问题)

    最近做的这个项目中 xff0c 用到了大量的枚举类 xff0c 今天来记录一下我遇到的问题 xff0c 如果能帮到大家就更好了 xff01 1 枚举类如何转为json xff08 在一个类的属性中 xff0c 这个枚举类属性如何直接使用在接
  • APM_ArduCopter源码解析学习(四)——IMU

    APM ArduCopter源码解析学习 xff08 四 xff09 IMU 前言一 system cpp 1 1 无人机内部初始化1 2 Copter init ardupilot 1 3 Copter startup INS groun
  • 查看当前系统的glibc版本

    有时我们经常需要查看当前系统的glibc版本 xff0c 可以这样查看 lib libc so 6 有时 lib x86 64 linux libc so 6 把这个文件当命令执行一下 为什么这个库可以直接run呢 xff1f 原来在lib