查看Glibc库版本

270 views
Skip to first unread message

Jianjun Kong

unread,
Nov 5, 2008, 6:22:32 AM11/5/08
to Xiyou-Linux-Group
今天碰到一个问题,如何查看系统里的Glibc的版本,

在ubuntu下
$ apt-cache show libc6
返回的信息里包含 Provides: glibc-2.7-1

网上查了一下,还有
$ rpm -q glib 也行。

还有 SIE 提到的查看文件名。

最后我在网上查到, "Frequently Asked Questions about the GNU C Library" (the FAQ)
里一个函数程序:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <stdio.h>
#include <gnu/libc-version.h>
int main (void) { puts (gnu_get_libc_version ()); return 0; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
运行结果:
kongove@ubuntu:~$ ./a.out
2.8.90

看来 apt-cache show libc6得到的那个信息应该不是当前glibc版本。

--
Jianjun Kong @_@ Happy Hacking
Homepage: http://kongove.cn/
Gtalk: kongj...@gmail.com

Thomas X. Iverson

unread,
Nov 5, 2008, 6:25:34 AM11/5/08
to Jianjun Kong, Xiyou-Linux-Group
2008/11/5 Jianjun Kong <kongj...@gmail.com>:

ArchLinux下只需要pacman -Ss即可看到源内最新软件的版本信息,更方便一些

--
Keep It Simple Stupid

http://blog.ghostunix.org

ghosTM55

Américo Wang

unread,
Nov 5, 2008, 6:35:11 AM11/5/08
to Jianjun Kong, Xiyou-Linux-Group
On Wed, Nov 05, 2008 at 07:22:32PM +0800, Jianjun Kong wrote:
>今天碰到一个问题,如何查看系统里的Glibc的版本,
>
>在ubuntu下
>$ apt-cache show libc6
>返回的信息里包含 Provides: glibc-2.7-1
>
>网上查了一下,还有
>$ rpm -q glib 也行。
>


很不幸,你连glib和glibc都没分清楚。。。。。

>还有 SIE 提到的查看文件名。
>
>最后我在网上查到, "Frequently Asked Questions about the GNU C Library" (the FAQ)
>里一个函数程序:
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>#include <stdio.h>
>#include <gnu/libc-version.h>
> int main (void) { puts (gnu_get_libc_version ()); return 0; }
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>运行结果:
>kongove@ubuntu:~$ ./a.out
>2.8.90
>
>看来 apt-cache show libc6得到的那个信息应该不是当前glibc版本。
>

$ /lib/libc.so.6
GNU C Library stable release version 2.8, by Roland McGrath et al.
Copyright (C) 2008 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 4.3.0 20080428 (Red Hat 4.3.0-8).
Compiled on a Linux >>2.6.18-92.1.6.el5<< system on 2008-07-16.
Available extensions:
The C stubs add-on version 2.1.2.
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
RT using linux kernel aio
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

--
"Sometimes the only way to stay sane is to go a little crazy."

SIE

unread,
Nov 5, 2008, 6:38:54 AM11/5/08
to Américo Wang, Jianjun Kong, Xiyou-Linux-Group


2008/11/5 Américo Wang <xiyou.w...@gmail.com>


你们的glibc版本都好高啊 我的还是2.7~



--
"Sometimes the only way to stay sane is to go a little crazy."






--
#apt-get install wife
The following extra packages will be installed:
wife-house wife-car wife-friends wife-dog wife-mother_in_law wife-kid wife-no_more_tv_sports wife-kidlibs wife-bricomanialibs
The following packages will be upgraded:ego-restrainer freedom-throttler
Estimated installation time: 47 years
Do you want to continue [Y/n]?

刘洋

unread,
Nov 5, 2008, 7:15:37 AM11/5/08
to Jianjun Kong, Xiyou-Linux-Group
On Wed, Nov 05, 2008 at 07:22:32PM +0800, Jianjun Kong wrote:
> 今天碰到一个问题,如何查看系统里的Glibc的版本,
>
> 在ubuntu下
> $ apt-cache show libc6
> 返回的信息里包含 Provides: glibc-2.7-1
>
> 网上查了一下,还有
> $ rpm -q glib 也行。
>
> 还有 SIE 提到的查看文件名。
>
> 最后我在网上查到, "Frequently Asked Questions about the GNU C Library" (the FAQ)
> 里一个函数程序:
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> #include <stdio.h>
> #include <gnu/libc-version.h>
> int main (void) { puts (gnu_get_libc_version ()); return 0; }
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 运行结果:
> kongove@ubuntu:~$ ./a.out
> 2.8.90
>
> 看来 apt-cache show libc6得到的那个信息应该不是当前glibc版本。
>
对这个gnu_get_libc_version()很有用,不过貌似是返回一个静态区里的字符串?非线程安全的?

刘洋

unread,
Nov 5, 2008, 7:19:16 AM11/5/08
to SIE, Am閞ico Wang, Jianjun Kong, Xiyou-Linux-Group
> > <http://www.gnu.org/software/libc/bugs.ht<http://www.gnu.org/software/libc/bugs.html>
> > ml <http://www.gnu.org/software/libc/bugs.html>>.
>
>
>
> 你们的glibc版本都好高啊 我的还是2.7~
>
我在程序里实验的结果,我现在编程涉及的没有超过2.4的~

SIE

unread,
Nov 5, 2008, 7:22:34 AM11/5/08
to SIE, Am閞ico Wang, Jianjun Kong, Xiyou-Linux-Group

你们的板子直接跑的linux?我还没接触过直接在嵌入式中跑的Linux,都是uclinux,唉,没玩过高级的。
 

刘洋

unread,
Nov 6, 2008, 7:17:24 AM11/6/08
to SIE, Am閞ico Wang, Jianjun Kong, Xiyou-Linux-Group
{snip}

> > >
> > >
> > > 你们的glibc版本都好高啊 我的还是2.7~
> > >
> > 我在程序里实验的结果,我现在编程涉及的没有超过2.4的~
>
>
> 你们的板子直接跑的linux?我还没接触过直接在嵌入式中跑的Linux,都是uclinux,唉,没玩过高级的。
>
呵呵,准确点说,教学产品中是普通的Linux,现在不多了。真正我们现在用的基本是Montavista的实时Linux。

李磊

unread,
Nov 8, 2008, 10:32:24 AM11/8/08
to SIE, Am閞ico Wang, Jianjun Kong, Xiyou-Linux-Group
2008/11/6 刘洋 <yang....@gmail.com>:
/lib/libc.so.6 这个命令貌似也可以。

刘洋

unread,
Nov 8, 2008, 11:38:53 AM11/8/08
to 李磊, SIE, Am閞ico Wang, Jianjun Kong, Xiyou-Linux-Group
我才发现,库是可以直接运行的??
确实可以看到版本~

李磊

unread,
Nov 8, 2008, 12:22:44 PM11/8/08
to 李磊, SIE, Am閞ico Wang, Jianjun Kong, Xiyou-Linux-Group
2008/11/9 刘洋 <yang....@gmail.com>:
我也是刚才找别的东西时候偶然发现的~~

梅延涛

unread,
Nov 8, 2008, 1:01:46 PM11/8/08
to 西邮Linux兴趣小组


On 11月9日, 上午1时22分, "李磊" <lilei1...@gmail.com> wrote:
> 2008/11/9 刘洋 <yang.liu...@gmail.com>:
>
> > On Sat, Nov 08, 2008 at 11:32:24PM +0800, 李磊 wrote:
> >> 2008/11/6 刘洋 <yang.liu...@gmail.com>:
> >> > {snip}
>
> >> >> > > 你们的glibc版本都好高啊 我的还是2.7~
>
> >> >> > 我在程序里实验的结果,我现在编程涉及的没有超过2.4的~
>
> >> >> 你们的板子直接跑的linux?我还没接触过直接在嵌入式中跑的Linux,都是uclinux,唉,没玩过高级的。
>
> >> > 呵呵,准确点说,教学产品中是普通的Linux,现在不多了。真正我们现在用的基本是Montavista的实时Linux。
>
> >> /lib/libc.so.6 这个命令貌似也可以。
>
> > 我才发现,库是可以直接运行的??
> > 确实可以看到版本~
>
> 我也是刚才找别的东西时候偶然发现的~~
好像只有这个库可以,其他的都是段错误……有点像那种“彩蛋“。

Américo Wang

unread,
Nov 8, 2008, 4:07:18 PM11/8/08
to 李磊, SIE, Jianjun Kong, Xiyou-Linux-Group
2008/11/8 刘洋 <yang....@gmail.com>:
> 我才发现,库是可以直接运行的??
> 确实可以看到版本~
>
>

我就纳闷了,为什么你们都不读一下本主题中的第2封邮件???
我在里面明显地演示了把libc库直接运行的结果。可惜你们连看
一眼的功夫都没有~~!

库并不是都可以直接运行的,只是glibc做了点儿手脚才让它可以
运行。

Makerules:586:LDFLAGS-c.so += -e __libc_main

csu/version.c:71:__libc_main (void)

void
__libc_main (void)
{
__libc_print_version ();
_exit (0);
}

当然了,前提是内核支持,对于linux这是毫无疑问的:

fs/binfmt_elf.c:

if (loc->elf_ex.e_type != ET_EXEC && loc->elf_ex.e_type != ET_DYN)
goto out;

刘洋

unread,
Nov 8, 2008, 8:08:18 PM11/8/08
to Américo Wang, 李磊, SIE, Jianjun Kong, Xiyou-Linux-Group
确实是我看得不仔细,我指看到你秀你的库版本,竟然没有注意到你是直接把库运行的……也没想到,汗~
这就是在编译的时候指定__libc_main作为入口函数?所以可以运行?
Reply all
Reply to author
Forward
0 new messages