2

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

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

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

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

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

4

1 回答 1

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

于 2015-03-06T20:04:18.557 回答