
so
liu5320102
这个作者很懒,什么都没留下…
展开
-
linux动态链接库全局变量共享问题&DLL共享数据段
Linux写时拷贝技术(copy-on-write) 进程间是相互独立的,其实完全可以看成A、B两个进程各自有一份单独的liba.so和libb.so,相应的动态库的代码段和数据段都是各个进程各自有一份的。 然后在这个基础上,由于代码段是不会被修改的,所以操作系统可以采用copy on write的优化技术,让两个进程共享同一份物理内存。这是属于在不改变系统行为的基础上,为了节省内存,转载 2017-07-11 15:14:06 · 1846 阅读 · 0 评论 -
linux 下动态链接实现原理
符号重定位 讲动态链接之前,得先说说符号重定位。 c/c++ 程序的编译是以文件为单位进行的,因此每个 c/cpp 文件也叫作一个编译单元(translation unit), 源文件先是被编译成一个个目标文件, 再由链接器把这些目标文件组合成一个可执行文件或库,链接的过程,其核心工作是解决模块间各种符号(变量,函数)相互引用的问题,对符号的引用本质是对其在内存中具体地址的引用,因此确定符号地转载 2017-07-11 15:23:37 · 458 阅读 · 0 评论