在Solaris上设置LD_LIBRARY_PATH的位置?

时间:2009-03-02 21:58:02

标签: unix path solaris

在Solaris上设置特定于应用程序的LD_LIBRARY_PATH变量的最佳位置是什么? 怎么做

  

LD_LIBRARY_PATH

变量工作?

我们目前在.kshrc中进行了设置,但不同的应用程序需要不同版本的消息传递框架,但这些应用程序在相同的用途下运行,因此它们需要不同的LD_LIBRARY_PATH,所以在您看来是什么是设置此变量的最佳位置?

基本上我试图弄清楚如何使这个变量路径成为应用程序的一部分,而不是特定于用户环境。

7 个答案:

答案 0 :(得分:14)

通常我只有一个启动应用程序的shell脚本。在shell脚本中,我将LD_LIBRARY_PATH设置为我对该应用程序所需的任何内容,然后让脚本启动该应用程序。这样做应该导致仅为该应用程序设置路径。

答案 1 :(得分:6)

您可以在“ld.so.1”的手册页上找到LD_LIBRARY_PATH的正式描述,即运行“man ld.so.1”。它还描述了运行时链接程序所遵循的一些其他变量。

除了LD_LIBRARY_PATH之外,可执行文件和共享库还可以为库提供内置的搜索路径。如果您正在运行自己链接的应用程序,则可以使用ld的-R选项设置内置路径(Sun CC和gcc都可以选择执行相同的操作)。这可能允许您首先避免使用LD_LIBRARY_PATH

答案 2 :(得分:2)

Vladr,alanc是对的。

不建议在Solaris上设置LD_LIBRARY_PATH。完全没有。

如果需要将特定的运行路径烘焙到库或可执行文件中, 那么你应该使用-R标志到链接器。如果用gcc构建,那么 使用-Wl,Rpath(我想)。

如果你需要在构建后的步骤中执行此操作(例如,因为你缺乏 来源重新编译),然后elfedit(1)会帮助你很多。记录在案 在联机帮助页中,以及http://docs.oracle.com/cd/E26502_01/html/E26507/index.html

中的链接程序+库指南中

答案 3 :(得分:1)

crle的反应是最正确的。在Solaris上,不应使用LD_LIBRARY_PATH。请改用crle。要查看当前路径,只需单独运行“crle”即可。要更新列表,请使用crle -u -l /path/to/your/lib/directory。将更改写入系统配置需要-u,否则更改将是临时的。有关更多选项,请参见手册页。

答案 4 :(得分:0)

刚刚发现全局LD_LIBRARY_PATH没有生效的情况,我不得不在应用程序之前包装脚本并设置LD_LIBRARY_PATH。 如果你在/ opt / csw / lib下安装了大量的libs,那么crle是一个很好的全局解决方案,来自blastwave的pkgutil。

答案 5 :(得分:0)

你可以查看你的.profile或.profile.user文件。它会有一个注释条目。不推荐使用它,因为它已经坏了。你应该通过将值传递给flags来构建二进制文件而不是使用变量

答案 6 :(得分:-1)

您可以使用crle命令:

crle -l / path / to / your / lib / file