我对执行期间共享库的内存布局感到困惑。让我把我理解的东西。
.so文件是每个二进制文件中没有重复代码的文件,因此存在单个副本。二进制文件将更新GOT和其他表,并使用这些函数。
我正在努力了解如何;我收到了以下链接http://www.openbsd.org/papers/nycbsdcon08-pie/mgp00010.html。现在,如果您看到这一点,所有共享库都将“mmaped”到进程内存。这很明显,因为它必须在它自己的存储空间中。
如果我们有BSS /数据部分,则必须在流程之间复制,因为它将特定于流程。 .TEXT部分会发生什么?它会在运行时重复还是在某个地方加载,每个二进制文件会将其映射到自己的用户空间?