这有点难以理解,但我正在尽我所能。
在Red Hat 6.4上使用gcc 4.4.6& ld 2.20.51,
我从一个共享库(.so)和一个静态库(.a)链接到二进制可执行程序代码。
共享库公开由PROGRAM直接调用的API。这个共享库的实现是编译和放大的。链接到静态库静态lib1 。
静态库还公开了自己的API,它由PROGRAM直接调用。其部分实现基于直接复制到其中的静态lib1 文件的子集。
任何API(任一库)都没有实际公开由静态lib1 实现的数据类型或函数。
因为代码被复制,所以符号是相同的。
在运行时,我看到了这种行为: