C标准库和目标文件

时间:2014-11-20 10:07:47

标签: c

我知道每个头文件,即string.h,都应该有一个目标文件 有适当的实施。

我也知道,对于GCC和glibc,有一个libc.alibc.so包含目标文件。

我尝试打开libc.a以查看是否可以找到,string.o但我找不到它。

为什么呢?我在哪里可以找到对应目标文件的每个标题?

2 个答案:

答案 0 :(得分:2)

它可能依赖于实现。单个.h文件可能对应于许多.o或相反,您可能会有多个.h用于单个.o

例如,在我的libc.a中,我可以看到每个字符串函数有一个模块:

$ ar t libc.a | grep '^str' | sort
strcasecmp.o
strcasestr.o
strcat.o
strchr.o
strcmp.o
strcoll.o
strcpy.o
strcspn.o
strdup.o
strerror.o
strfmon.o
strftime.o
stringlist.o
strlcat.o
strlcpy.o
strlen.o
strmode.o
strncat.o
strncmp.o
strncpy.o
strndup.o
strnlen.o
strnstr.o
strpbrk.o
strptime.o
strrchr.o
strsep.o
strsignal.o
strspn.o
strstr.o
strtofflags.o
strtoimax.o
strtok.o
strtol.o
strtoll.o
strtonum.o
strtoq.o
strtoul.o
strtoull.o
strtoumax.o
strtouq.o
strxfrm.o

答案 1 :(得分:0)

好吧,在我的系统中,libc.so显示在/lib

[sourav@braodsword temp]$ ls -l /lib/libc*
-rwxr-xr-x 1 root root 1611564 Mar 10  2010 /lib/libc-2.5.so

但是,如果您正在寻找source code,那么无论如何都不会在.so文件中找到它。

同样,不要指望,每个头文件声明都会有一个不同的目标文件。它们被组合在一起形成共享库.so