Изменить запрос Lib исполняемого файла

В настоящее время я использую программу под названием "Запись", созданную Stylus Labs. Это однофайловое приложение, которое использует библиотеки QT5.7. Он работает на моем ноутбуке с Ubuntu 16.04 x64 Bit.
На самом деле эта программа нацелена на Ubuntu 17 и не работает на Ubuntu 16.04 из-за отсутствия библиотек QT5.7.
После изменения и переименования вручную всех необходимых библиотек в /usr/lib/x86_64-linux-gnu программа работает нормально.
Но из-за этого такие программы, как Teamviewer, перестают работать из-за путаницы.

Я хотел бы изменить цель этой программы, чтобы оставить системные библиотеки такими, какие они есть, и вставить нужные библиотеки в папку приложения.

Я уже пытался вставить необходимые файлы в ту же папку, в которой находится приложение, и оно не работает. Я также установил QT 5.7.1 и установил новые папки как стандартные для всей системы, но безуспешно. Запись все еще смотрит на /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.1 в my_program исполняемым:

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

Чтобы увидеть, какой исполняемый файл зависимостей в настоящее время имеет:

ldd my_program

Отсюда: Как я могу изменить имя общей библиотеки после создания программы, которая зависит от нее?

Другие вопросы по тегам