我目前正在使用由 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
解决:
- 在您的系统上至少安装 QT 5.7.1。
- 打开终端并输入
export LD_LIBRARY_PATH=/Path/to/QT/Qt5.7.1/5.7/gcc_64/lib/
- 打开 通过此终端写入
/path/to/writeExecutable/Write
完成
关闭此终端或使用另一个终端窗口后,您必须重复此过程。
答案1
要编辑可执行文件本身以使用libreplacement.so.1
而不是liboriginal.so.1
在my_program
可执行文件中:
patchelf --replace-needed liboriginal.so.1 libreplacement.so.1 my_program
要查看可执行文件当前具有的依赖项:
ldd my_program