我有一个问题,要求我在运行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变量中按顺序指定所有库路径只是修复它?
非常感谢任何帮助。
答案 0 :(得分:0)
如果您对运行Oracle Solaris 11.3 beta版本感兴趣,可以使用IPS格式获得固定的Instant Client。通过“修复”来解决问题。我的意思是你在运行它之前不需要设置LD_LIBRARY_PATH。
https://blogs.oracle.com/jmcp/entry/oracle_instant_client_now_available