我有一个Linux共享对象,它与一些共享对象动态链接,其中一些对象又与其他共享对象动态链接,需要
间接动态链接
. 为了找到这些SOs,我将一个RPATH头嵌入到我的顶层中,因此通过将链接器标志传递到G++中,如下所示:
-Xlinker -rpath -Xlinker $ORIGIN/../my/libs
这对Ubuntu 16.04和CentOS 7.x都有效(使用DevToolset 7中的G++7.3)。然而,在Ubuntu 18.04上执行这个构建时,它嵌入了一个RUNPATH头。与RPATH不同,RUNPATH只考虑查找我的顶级SO所需的SOs,而不考虑
间接动态链接
我已经确认从RPATH到RUNPATH的更改导致了这个问题。当我使用在Ubuntu 16.04上构建的带有RPATH头的SO时,间接链接可以正常工作。当我使用
chrpath-c公司
,间接链接中断,在Ubuntu 18.04和Ubuntu 16.04上。
如何让链接器在Ubuntu 18.04上使用RPATH?或者,我怎样才能完成
chrpath-c公司
-将RUNPATH头更改为RPATH?