心灵咖啡

 找回密码
 注册加入
查看: 3268|回复: 3
收起左侧

[环境架设] linux操作系统下的glibc库

[复制链接]
发表于 2015-1-29 18:11:03 | 显示全部楼层 |阅读模式
GLIBC 的内容

  由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个作业系统。以 glibc-2.2 为例,这些档案群主要包括:

  

1.分享函式库群:

  这是 glibc 的主体,分布 /lib 与 /usr/lib 中,包括 libc 标准 C 函式库、libm 数学函式库、libcrypt 加密与编码函式库、libdb 资料库函式库、libpthread 行程多执行绪函式库、libnss 网路服务函式库 .... 等等。这些都是可分享函式库,档名都以 .so 做结尾。其中,/lib/ld*.so 是程式与函式库连结的工具。有的用于程式编译时将程式与函式库内的函式物件连结,在只支援静态连结的系统中,此连结方式就是直接将所需的物件自函式库中抽出?砼c程式的可执行档相连,而在支援可分享函式库的系统中,在程式编译时期的连结只是在执行档中纪录了那些函式物件是存在那个函式库档案中,等该程式开始执行时,则由另一个负责动态连结的 ld*.so 将所需的函式库连结好?K执行。

  一般而言,负责程式编译时期的连结器档名为 ld. so,而负责程式执行时的动态连结器档名为 ld- .so 或 ld-linux. so (在 GNU/Linux 系统中)。

  

2.函式库标头档与程式开发元件:

  这些标头档档名都以 .h 为结尾,全部在 /usr/include/ 底下,其内容为函式库中各函式的宣告、巨集定义、资料物件的型别 .... 等等,这些都是程式开发者不可或缺的部分。

  除此之外,在 /usr/lib/ 中还有若干 .o 与 .a 的档案,这些是程式编译过程中要连结为可执行档时所需的元件,有些则为上述可分享函式库的静态连接版本,而后者可以在某些特殊场合下需要静态连结程式时使用。

3.函式库说明文件:

  在一般的 UNIX 系统下,这些说明文件是放在 /usr/man 或 /usr/share/man 底下,统称为 man pages,其底下还分若干章节,其中第二章 (man2) 讲的是系统呼叫,而第三章 (man3) 讲的就是 libc 标准函式库,这些都是系统开发者重要的参考资料。

  而在 GNU 的系统中,除了 man pages 之外,还有一套称为 info 的文件资料系统,而且里头的说明往往比 man pages 还要详尽,这在 glibc 中也不例外。glibc 的 info 文件位于 /usr/share/info/libc. info* ,本文中有许多素材就是取自这些文件的内容。

 

4.字集转换模组与区域化资料库:

  这些是与程式国际化与本土化相关的部分,主要可分成四大块: /usr/lib/gconv/ 内含大量的字集转换模组,大部分是各种字集及编码方式与系统的基底字集之间的 转换。第二块是 /usr/lib/locale,内含以系统基底字集写成的区域化资料库 (locale),像是 LC_CTYPE、LC_TIME .... 等等。第三块是

  /usr/share/locale/,内含可跨平台使用的区域化资料,主要是各应用程式的信息翻译部分。而最后一块是 /usr/share/i18n/,其内容是各区域化资料库的原始码,以及系统支援的内码对应表 .... 等等。

 

5.时区资料库:

  主要分别在 /usr/share/zoneinfo 底下,内含世界各地时区与格林威治时间的转换资料。

  其他工具程式与设定档:

  工具程式分?言 /usr/bin 与 /sbin 底下,包括一些转码与区域化资料库相关的程式如 iconv, locale, localedef 等,以及用?盹@示应用程式与可分享函式库相依关系的 ldd, 还有可分享函式库搜寻路?焦芾沓淌 ldconfig .... 等。而其相关的设定档则位于 /etc 底下。



——论坛程序问题,请给 qq124627513(微信同步)留言。(系统默认签名,点击修改
 楼主| 发表于 2015-1-29 18:17:11 | 显示全部楼层
Linux查看glibc版本信息


1  centos(以centos 6.0为例):

(1) 可通过rpm -qa | grep glibc查看系统目前安装了哪些和glibc有关的包:
[root@Cluster ~]# rpm -qa | grep glibc

glibc-2.12-1.47.el6_2.12.i686

glibc-headers-2.12-1.47.el6_2.12.x86_64

glibc-common-2.12-1.47.el6_2.12.x86_64

glibc-devel-2.12-1.47.el6_2.12.x86_64

glibc-2.12-1.47.el6_2.12.x86_64

可以看到系统上glibc的版本号为2.12。

如果想进一步查看,可通过rpm -qi glibc

[root@Cluster ~]# rpm -qi glibc

Name : glibc Relocations: (not relocatable)

Version : 2.12 Vendor: CentOS

Release : 1.47.el6_2.12 Build Date: 2012年05月10日 星期四 16时11分39秒

Install Date: 2012年05月21日 星期一 17时46分08秒 Build Host: c6b5.bsys.dev.centos.org

Group : System Environment/Libraries Source RPM: glibc-2.12-1.47.el6_2.12.src.rpm

Size : 12871227 License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+

Signature : RSA/SHA1, 2012年05月10日 星期四 18时01分09秒, Key ID 0946fca2c105b9de

Packager : CentOS BuildSystem

URL : http://sources.redhat.com/glibc/

Summary : The GNU libc libraries

Description :

The glibc package contains standard libraries which are used by

multiple programs on the system. In order to save disk space and

memory, as well as to make upgrading easier, common system code is

kept in one place and shared between programs. This particular package

contains the most important sets of shared libraries: the standard C

library and the standard math library. Without these two libraries, a

Linux system will not function.



(2) 也可以通过查看ls -l /lib/libc.so.6输出结果:
[root@Cluster ~]# ls -l /lib/libc.so.6

lrwxrwxrwx. 1 root root 12 5月 21 17:46 /lib/libc.so.6 -> libc-2.12.so



2  ubuntu(以ubuntu 11.04为例):

(1) 查看 ls -l /lib/i386-linux-gnu/libc.so.6的输出:
wzw@wzw-Lenovo:~$ ls -l /lib/i386-linux-gnu/libc.so.6

lrwxrwxrwx 1 root root 12 2012-07-15 09:14 /lib/i386-linux-gnu/libc.so.6 -> libc-2.13.so

(2) 也可以使用 apt-cache show libc6:
wzw@wzw-Lenovo:~$ apt-cache show libc6

Package: libc6

Priority: required

Section: libs

Installed-Size: 9456

Maintainer: Ubuntu Core developers

Original-Maintainer: GNU Libc Maintainers

Architecture: i386

Source: eglibc

Version: 2.13-0ubuntu13

Replaces: belocs-locales-bin, libc6-i386

Provides: glibc-2.13-1, libc6-i686

Depends: libc-bin (= 2.13-0ubuntu13), libgcc1, tzdata

Suggests: glibc-doc, debconf | debconf-2.0, locales

Conflicts: belocs-locales-bin, libc6-i686, prelink (<< 0.0.20090925), tzdata (<< 2007k-1), tzdata-etch

Breaks: nscd (<< 2.13)

Filename: pool/main/e/eglibc/libc6_2.13-0ubuntu13_i386.deb

Size: 3764596

MD5sum: 1cfb03baf7c299fcf266f1c9b20c00a5

SHA1: 2f2d25e96ae7a8f9489a460154ffc31460b2dead

SHA256: c3336e5b6480591925974be5329eaa56a5632697eeb4a75de52905b3efd65e81

Description-zh_CN: Embedded GNU C Library: Shared libraries

本软件包包含了系统中几乎所有程序都会用到的标准运行库,包括标准 C 语言共享库和标准数学 库,以及许多其它的运行库。

Multi-Arch: same

Homepage: http://www.eglibc.org

Bugs: https://bugs.launchpad.net/ubuntu/+filebug

Origin: Ubuntu

Supported: 18m

Task: minimal



3 发行版无关方法:
(1) 查看ldd –version的输出结果:
wzw@wzw-Lenovo:~$ ldd –version

ldd (Ubuntu EGLIBC 2.13-0ubuntu13) 2.13

版权所有 (C) 2011 Free Software Foundation, Inc.

这是自由软件;请参考原始码的版权声明。本软件不提供任何担保,甚至不会包括可售性或适用于任何特定目的的担保。

由 Roland McGrath 和 Ulrich Drepper 编写。



(2) 编译执行如下程序:
#include

#include

int main(void)

{

puts(gnu_get_libc_version ());

return 0;

}

wzw@wzw-Lenovo:~$ ./a.out

2.13

——论坛程序问题,请给 qq124627513(微信同步)留言。(系统默认签名,点击修改
 楼主| 发表于 2015-1-29 18:18:02 | 显示全部楼层
2015年1月28日,据说Linux Glibc库存在一处严重安全漏洞,通过gethostbyname系列函数可实现远程代码执行,获取服务器的控制权,漏洞发现者称利用漏洞可远程获取服务器Shell权限。

【影响范围】:使用Linux系统的云主机、VPS、独立服务器、主机托管等,  Glibc 2.2 ~ Glibc 2.18

【修复方案】:  升级到Glibc 2.19及其以上版本。官方已在Glibc 2.19及以上版本中修复该漏洞。

升级方法:SSSH登录到主机控制台,运行命令: yum -y update glibc      即可完成升级。




——论坛程序问题,请给 qq124627513(微信同步)留言。(系统默认签名,点击修改
 楼主| 发表于 2015-5-6 12:23:05 | 显示全部楼层
查看linux机器是32位还是64位的方法


查看linux机器是32位还是64位的方法:

file /sbin/init 或者 file /bin/ls
/sbin/init: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

如果显示 64-bit 则为64位;

file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped


如果显示为32 bit 则为32bit;

uname -a:
uname -a
Linux pmx002**.**.**  2.6.32-71.el6.x86_64 #1 SMP Wed Sep 1 01:33:01 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux

x86_64表示64位机器

uname -a
Linux pmx0**.**.**    2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux




i686表示32位机器

i686 只是i386的一个子集,支持的cpu从Pentium 2 (686)开始,之前的型号不支持.

备注:

1. i386 适用于intel和AMD所有32位的cpu.以及via采用X86架构的32的cpu.

intel平台包括8086,80286,80386,80486,奔腾系列(1.2.3.4)、赛扬系列,Pentium D系列

    以及centrino P-M,core duo 等.

2. X86_64 适用于intel的Core 2 Duo, Centrino Core 2 Duo, and Xeon 和AMD Athlon64/x2, Sempron64/x2, Duron64等采用X86架构的64位cpu.

3. PPC   适用于Apple Macintosh G3, G4, G5, PowerBook, and other non-Intel models

安装DVD包括的软件要比安装光盘多一些,安装DVD也包括了两种图形界面(KDE和gnome).

4.Jigdo

也可以通过 Jigdo 下载 Fedora 发行版。Jigdo 可以加速下载安装盘的 ISO 镜像。同 BT 下载等待任务完全完成所不同,Jidgo 自动定位最快的镜像服务器(通过 Fedora 镜像管理器),并且从中下载所需要的文件。为了减少所需的网络流量,可以让 Jigdo 扫描现存的 DVD 或 CD 介质。这个功能对于以下用户特别有用。



getconf LONG_BIT
在32位和64位机器上运行如下命令,结果如下:
[b@002 ~]$ getconf LONG_BIT
64

[root@pmx4 /]# getconf LONG_BIT
32
——论坛程序问题,请给 qq124627513(微信同步)留言。(系统默认签名,点击修改
您需要登录后才可以回帖 登录 | 注册加入

本版积分规则

广告
广告位
广告位
广告位
关闭

站长推荐上一条 /1 下一条

QQ|联系我们|手机版|小黑屋|Archiver|心灵咖啡 ( 粤ICP备16121829号-1 )

GMT+8, 2024-11-22 20:56 , Processed in 0.068833 second(s), 24 queries .

Powered by Discuz! and 心灵文学

Copyright © 2001-2021, Tencent Cloud.


本站文章为原创会员所有,未经许可禁止去版权转载,但欢迎分享本站文章链接!另,若有抄袭侵权,联系即删禁。
快速回复 返回顶部 返回列表