Какую технологию выбрать для создания приложения не зависящего (почти) от окружения? | |
---|---|
Flatpack | |
Snap | |
Appimage | |
Виртуальная машина | |
Docker контейнер | |
LXC контейнер | |
Пересобирать по необходмости | |
Другое |
vasek |
|
Темы:
47
Сообщения:
11743
Участник с: 17 февраля 2013
|
archevator, способов много, советую погуглить по фразе LD_LIBRARY_PATH= Конечно самый правильный добавить свой файл в ld.so.conf.d, в котором указать полный путь до нужных либ и запустить ldconfig ... но можно и самый простой, который применил ты - создать скрипт для запуска, но только нужно изменить - будет типа такого cat proga.sh В /любой/path/ скопировать нужные либы, запуск из терминала proga.sh ... или как нравится ... можно и без скрипта, а все указать в командеЕсть много и других способов прописки, все-таки рекомендую погуглить и почитать. EDIT 1 - и в /любой/path/ закидывать только действительно необходимые либы, а не все ...
Ошибки не исчезают с опытом - они просто умнеют
|
vasek |
|
Темы:
47
Сообщения:
11743
Участник с: 17 февраля 2013
|
Провел эксперимент ldd /usr/bin/ls mkdir ~/lib_lscp /usr/lib/libxcb.so.1 ~/lib_ls cp /usr/lib/libXau.so.6 ~/lib_ls cat ~/ls.sh Используя отладку LD_DEBUG при запуске ~/ls.sh видим какие либы берутся из /home/vasek/lib_ls
Ошибки не исчезают с опытом - они просто умнеют
|
archevator |
|
Темы:
5
Сообщения:
32
Участник с: 01 августа 2018
|
vasekДа, спасибо, по ссылке ходил, будем пробовать дальше. vasekТоже провел, работает, только зависимости у меня для ls другие: Пробую снова для своего приложения, скопировал библиотеки в папку: Проверяю зависимости для fbserver Проверяю зависимости для библиотеки в созданной папке, путь поиска библиотек указан явно, ldd находит библиотеки по указанному пути: Проверяю зависимости для fbserver с указанием явного пути для поиска библиотек: ldd находит библиотеки в системных каталогах, несмотря на то для поиска библиотек явно задан каталог.Почему-то в одном случае указание пути поиска LD_LIBRARY_PATH работает как ожидается, а в другом - нет. При запуске с LD_DEBUG=libs получаем следующее:
|
vasek |
|
Темы:
47
Сообщения:
11743
Участник с: 17 февраля 2013
|
archevatorЛучше использовать LD_DEBUG=files, а если полный анализ, то all ... но вывод будет громадный и лучше выводить лог в файл. И не все так просто с этим динамическими билиотеками - их два типа, которые вызываются по разному, плюс к этому не все либы присутствуют в выводе ldd и нужно делать полный анализ запуска проги. И для полного анализа иногда применяют и дополнительные утилиты типа strace, ltrace. А, главное, если хочешь обеспечить полный запуск своего приложения не зависимо от среды ОС, то с простым копированием библиотек, имхо, не всегда и получится. А потому лучше от самоделок отказаться - если есть желание для такого запуска, то лучше использовать готовые решения, а не изобретать велосипед. EDIT 1 - и зачем такие сложности, если это так необходимо и редко используется archevatorне проще ли изготовить LiveCD с установленной нужной прогой или установить систему на флэшку в нужном окружении и с нужным ПО - понадобилось, загрузился, проверил. EDIT 2 - на всякий случай кидаю 2 ссылки .. 1 .. и .. 2 .. ...... и более правильный путь через ld.so.conf.d и ldconfig, как описывал выше (должен быть указан и в приведенных ссылка, но не проверял)
Ошибки не исчезают с опытом - они просто умнеют
|
vasek |
|
Темы:
47
Сообщения:
11743
Участник с: 17 февраля 2013
|
archevatorПодробно не смотрел, но похоже не верно используется LD_LIBRARY_PATH ... EDIT 1 - проверил на ls - скопировал 3 либы в /home/vasek/lib_ls - запускаем LD_LIBRARY_PATH="/home/vasek/lib_ls" ldd /usr/bin/ls ... и видим эти 3 файла (остальные как обычно из системной директории /usr/lib/... - не привел) Так что нужно смотреть подробнее, что за прога, точнее, как включены эти динамические либы.
Ошибки не исчезают с опытом - они просто умнеют
|
sfs |
|
Темы:
8
Сообщения:
148
Участник с: 07 февраля 2019
|
archevatorМои скрипты автоматизации портирования : dep-find - показывает недостающие либы mkport - помогает перенести в /opt и создать запускающий скрипт |