0

我有一个问题需要我在运行 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 变量中按顺序指定所有库路径来修复它?

任何帮助将不胜感激。

4

1 回答 1

0

如果您对运行 Oracle Solaris 11.3 beta 版本感兴趣,您可以获得一个 IPS 形式的已修复 Instant Client。'fixed-up' 我的意思是你不需要在运行它之前设置 LD_LIBRARY_PATH 。

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

于 2015-07-10T23:38:41.820 回答