【问题标题】:modifying the linkage path of an executable修改可执行文件的链接路径
【发布时间】:2015-03-06 17:11:49
【问题描述】:

ldd 实用程序显示二进制可执行文件所依赖的共享对象文件,还显示该二进制可执行文件在文件系统上的路径。

是否可以在现有的可执行文件上修改此路径?例如,假设我有一个二进制“foo.so”,我说:

    libssl.so.0.9.8 => /opt/lib64/libssl.so.0.9.8

如果我将此.so 文件部署到没有在指定路径有lbssl.so.0.9.8 的机器上,我当然会在使用foo.so 时收到链接器错误。那么,是否可以修改现有可执行文件上的链接路径?

我意识到另一种解决方案是确保现有的链接路径指向一个有效的目标文件,实际上将目标文件复制到ldd 显示的路径。但是,假设我遇到了一种不可行的情况。是否可以修改现有可执行文件的链接路径?

【问题讨论】:

  • 每个系统都有自己的链接路径。因此,当您将二进制文件从一台机器移动到另一台机器时。第二台机器可能具有完全不同的库路径。如果您想在库路径中添加一些路径,请将其添加到 LD_LIBRARYPAH

标签: linux unix shared-libraries ldd


【解决方案1】:

您所指的路径不是特定于可执行文件的。其系统特定。因此,当您将二进制文件从一台机器转移到另一台机器时,下一台机器可能会有完全不同的放置库设置。因此机器 A 上的二进制文件可能链接到 /usr/lib 中的库,但下一台机器 B 可以配置为链接到 /home/test/lib 中的库。只是一个例子。

当您希望一个可执行文件链接到其他库(在 /home/test/lib 中)而不是默认库时。你可以通过设置LD_LIBRARY_PATH=/home/test/lib 来做到这一点。

http://wiredrevolution.com/system-administration/how-to-correctly-use-ld_library_path

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    相关资源
    最近更新 更多