摘要: 如果多个程序使用同一个动态库,动态库指令上面的跳转就会出现问题。所以我们需要把需要跳转的指令单独拿出来,跟数据部分放在一起,这样指令部分就可以保持不变,而数据部分可以在每个进程中拥有一个副本。这种方案就是目前被称为地址无关代码(PIC,Position-independent Code)的技术。 在 阅读全文
posted @ 2023-05-31 20:51 woodx 阅读(32) 评论(0) 推荐(0) 编辑
摘要: Linux中有一套规则来命名系统中的每一个共享库,它规定共享库的命名规则必须如下libname.so.x.y.z 最前面使用前缀“lib”、中间是库的名字和后缀“.so”, 最后面跟着的是三个数字组成的版本号。“x”表示主版本号,“y”表示次版本号,“z”表示发布版本号。 发布版本号表示库的一些错误 阅读全文
posted @ 2023-05-31 17:20 woodx 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 在动态库链接器中,dlopen()用来打开一个动态库,并将其加载到进程的地址空间,完成初始化过程,它的C原型函数位 void * dlopen(const char * filename, int flag); 第一个参数是被加载动态库的路径,如果这个路径是绝对路径,则该函数将会尝试直接打开该动态库 阅读全文
posted @ 2023-05-31 16:38 woodx 阅读(157) 评论(0) 推荐(0) 编辑