设置LD_LIBRARY_PATH会破坏我的apache模块,可以修复它吗?

时间:2015-06-16 23:35:51

标签: oracle apache solaris ld rpath

我有一个问题,要求我在运行Apache(2.2)时设置LD_LIBRARY_PATH环境变量,但遗憾的是它打破了一个功能完善的模块。我正在寻找一种方法来解决它,并想知道我自己编译的模块是否可以重新编译并与rpath的使用相关联。

到目前为止

故事: 我在Solaris上,我已经编译了Apache并启用了动态共享对象。然后我使用apxs编译了一个名为auth_gss的模块并将其加载到Apache中,一切都运行得很好。

然后我编译了PHP并加载了那个也很棒,但最后一个难题是PHP中的Oracle OCI8扩展。编译得很好,但是在加载时抱怨它无法找到所需的库,没问题,Oracle说你必须将LD_LIBRARY_PATH设置为Oracle Instant Client主页。我设置并重启apache并且OCI模块正在运行,但是auth_gss模块现在中断了。

我假设它从LD_LIBRARY_PATH中选择了一个不应该的库,我想知道是否有可以编译auth_gss模块的方法它没有查看LD_LIBRARY_PATH。

因此我的问题是,如果当我链接我的auth_gss模块时,我指定了-Wl,-rpath = / usr / local / lib(其中所有的依赖项都存在),它是否真的会在LD_LIBRARY_PATH中查找它们?根据我的阅读,我认为在Solaris上总是使用该变量,在这种情况下,我该如何解决这个问题?

或者我只是非常愚蠢,是否会在LD_LIBRARY_PATH变量中按顺序指定所有库路径只是修复它?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您对运行Oracle Solaris 11.3 beta版本感兴趣,可以使用IPS格式获得固定的Instant Client。通过“修复”来解决问题。我的意思是你在运行它之前不需要设置LD_LIBRARY_PATH。

https://blogs.oracle.com/jmcp/entry/oracle_instant_client_now_available