LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 748|回复: 4

有关 c 库的问题

[复制链接]
发表于 2005-4-17 12:19:37 | 显示全部楼层 |阅读模式
通常写程序,会用到这样一个动态库:
libc.so.6 => /lib/tls/libc.so.6

问题:
1. tls 表示什么意思?
2. 这是 /lib 下的libc(是不是啊?),而在 /usr/lib 下还有一个 libc.so,那个是做什么的?两者是什么关系?
3. 还有 glibc 又是做什么用的?
发表于 2005-4-17 19:40:58 | 显示全部楼层
libc有支持LinuxThread和NPTL两种线程库的扩展。一般支持NPTL的放在/lib/tls目录下。支持LinuxThread的就放在/lib下面。如果在你的系统上两种方式都支持,就会在/lib和/lib/tls目录下各有一个libc.so.6。想要具体知道那个libc.so.6是支持LinuxThread还是NPTL,可以直接执行libc.so.6(这个动态厍可以直接执行)。在Available extensions:可以看到支持的是什么线程库:

  1. bash-2.05b$ /lib/libc.so.6
  2. GNU C Library stable release version 2.3.3, by Roland McGrath et al.
  3. Copyright (C) 2004 Free Software Foundation, Inc.
  4. This is free software; see the source for copying conditions.
  5. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
  6. PARTICULAR PURPOSE.
  7. Compiled by GNU CC version 3.3.3 20040412 (Gentoo Linux 3.3.3-r6, ssp-3.3.2-2, pie-8.7.6).
  8. Compiled on a Linux 2.4.21 system on 2004-11-07.
  9. Available extensions:
  10.         GNU libio by Per Bothner
  11.         crypt add-on version 2.1 by Michael Glad and others
  12.         linuxthreads-0.10 by Xavier Leroy
  13.         BIND-8.2.3-T5B
  14.         libthread_db work sponsored by Alpha Processor Inc
  15.         NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
  16. Report bugs using the `glibcbug' script to <bugs@gnu.org>.
  17. bash-2.05b$
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-4-18 09:27:08 | 显示全部楼层
请问如何控制链接到哪个库上?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-9 14:47:52 | 显示全部楼层
Post by baif
请问如何控制链接到哪个库上?

  1. [rick@Fedora-Core test]$ LD_ASSUME_KERNEL=2.6
  2. [rick@Fedora-Core test]$ export LD_ASSUME_KERNEL
  3. [rick@Fedora-Core test]$ gcc test.c -o test
  4. [rick@Fedora-Core test]$ ldd test
  5.         linux-gate.so.1 =>  (0xffffe000)
  6.         libc.so.6 => /lib/tls/libc.so.6 (0x00943000)
  7.         /lib/ld-linux.so.2 (0x00926000)
  8. [rick@Fedora-Core test]$ LD_ASSUME_KERNEL=2.4
  9. [rick@Fedora-Core test]$ export LD_ASSUME_KERNEL
  10. [rick@Fedora-Core test]$ gcc test.c -o test
  11. [rick@Fedora-Core test]$ ldd test
  12.         linux-gate.so.1 =>  (0xffffe000)
  13.         libc.so.6 => /lib/libc.so.6 (0xb7eb4000)
  14.         /lib/ld-linux.so.2 (0x00926000)
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-11-10 17:31:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表