更改可执行文件的 Lib 请求

更改可执行文件的 Lib 请求

我目前正在使用由 Stylus Labs 创建的名为“Write”的程序。它是一个使用 QT5.7 库的单文件应用程序。它在我的笔记本电脑上运行,使用的是 Ubuntu 16.04 x64 位。
实际上,该程序针对的是 Ubuntu 17,由于缺少 QT5.7 库,因此无法在 Ubuntu 16.04 上本地运行。
在 /usr/lib/x86_64-linux-gnu 中手动更改和重命名所有必需的库后,该程序运行良好。
但由于这种混乱,基于 qt 的程序(如 Teamviewer)因混乱而停止工作。

我想改变这个程序的目标,这样我就可以保留系统库原样,并将所需的库粘贴到应用程序的文件夹中。

我已经尝试将所需文件粘贴到应用程序所在的同一文件夹中,但没有成功。我还安装了 QT 5.7.1,并将较新的文件夹设置为系统范围内的默认文件夹,但没有成功。Write 仍在查看 /usr/lib/x86。。。

我希望我的问题是清楚的,如果不是,请告诉我如何澄清。


以下库是从以下库复制并粘贴的

/Qt5.7.1/5.7/gcc_64/lib/xxx.so.5.7.1

/usr/lib/x86_64-linux-gnu/xxx.so.5

使 Write 在 ubuntu 16.04 上工作:

libicudata.so.56
libicudata.so.56.1
libicui18n.so.56
libicui18n.so.56.1
libicuuc.so.56
libicuuc.so.56.1
libQt5Core.so.5
libQt5Gui.so.5
libQt5Network.so.5
libQt5Svg.so.5
libQt5Widgets.so.5


解决:

  1. 在您的系统上至少安装 QT 5.7.1。
  2. 打开终端并输入export LD_LIBRARY_PATH=/Path/to/QT/Qt5.7.1/5.7/gcc_64/lib/
  3. 打开 通过此终端写入/path/to/writeExecutable/Write
    完成

关闭此终端或使用另一个终端窗口后,您必须重复此过程。

答案1

要编辑可执行文件本身以使用libreplacement.so.1而不是liboriginal.so.1my_program可执行文件中:

patchelf --replace-needed liboriginal.so.1 libreplacement.so.1 my_program

要查看可执行文件当前具有的依赖项:

ldd my_program

从这里:在构建依赖于共享库的程序后,如何更改该共享库的文件名?

相关内容