Изменить запрос 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
Решать:
- Установите как минимум 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
Отсюда: Как я могу изменить имя общей библиотеки после создания программы, которая зависит от нее?