我们有一个动态库,它是在已停产的工具(Borland Kylix)中开发的,因此我们必须在Red Hat 7.2安装中完成。到目前为止,我们在后续版本的Linux中加载此库(libX.so)时没有任何问题。但是,在最新版本中,如Fedora 21,我们在尝试使用dlopen
加载库时会收到分段错误信号。我们尝试了一些替代方案,其中之一是将旧的静态库链接到此共享库中。
我们知道这不是最好的方法,我们应该相信linux内核及其系统库提供的向后兼容性,但在我们的情况下(除非我们做错了),它不起作用。
那么,我们如何将系统库静态链接到现有的共享库中呢?我们需要使用已编译的libX.so
和"插件"进入静态系统库,如libc.a
。我们已经使用Kylix链接工具(ilink
)完成了它,但它生成了一个无效的库。因此,我们希望使用ld
或gcc
来选择此libX.so
并生成包含静态库的另一个libX.so
。
已编辑:包含gdb输出。
Program recevied signal SIGSEV, Segmentation Fault.
0xb7fe7c72 in _dl_relocate_object () from /lib/ld-linux.so.2