我们有一个动态库,它是在已停产的工具(Borland Kylix)中开发的,因此我们必须在Red Hat 7.2安装中完成 . 到目前为止,我们在后续版本的Linux中加载此库(libX.so)没有任何问题 . 但是,在最新版本中,如Fedora 21,我们在尝试使用 dlopen 加载库时会收到分段错误信号 . 我们尝试了一些替代方案,其中之一是将旧的静态库链接到此共享库中 .

我们知道这不是最好的方法,我们应该相信linux内核及其系统库提供的向后兼容性,但在我们的情况下(除非我们做错了),它不起作用 .

那么,我们如何将系统库静态链接到现有的共享库中呢?我们需要将已编译的 libX.so 和"plug in"用于静态系统库,如 libc.a . 我们已经使用Kylix链接工具( ilink )完成了它,但它生成了一个无效的库 . 因此,我们希望使用 ldgcc 来选择 libX.so 并生成另一个包含静态库的 libX.so .

编辑:包含gdb输出 .

Program recevied signal SIGSEV, Segmentation Fault. 
0xb7fe7c72 in _dl_relocate_object () from /lib/ld-linux.so.2