Answers:
接下来,.a文件是一个“ ar”档案。与tar存档不同,它存储.o或目标文件,从而允许将它们从存档中拉出并链接到程序中。如果需要,可以使用ar存储其他文件。
您可以使用-t参数获取ar文件成员的列表,例如:
ar -t /usr/lib/libc.a
.so文件是“共享对象”文件,并且对于链接器而言有更多可用信息,因此,可以将成员尽快链接到加载程序。
例如,尝试:
objdump -T /lib/libc-2.11.1.so
(或/ lib目录中的libc.so版本)。
有趣的是,.so文件也可以是完整的程序。例如,尝试运行/lib/libc.so.6。(遗憾的是,最后一部分似乎无法在更现代的系统上运行。这并不是很大的损失。)
ar -t /usr/lib/libc.a
。实际上,-
在这种情况下,似乎没有必要。也/lib/libc.so.6.
只是打印一些输出。我不知道我是否称其为full fledged program
。
ldd
在.so上运行,它将向您显示它使用的其他库。静态将返回一条消息,提示它不是动态库。