Название: Как подключить библиотеку? Отправлено: juvf от Июнь 04, 2018, 20:54 Linux. собрал программу с библиотекой буст. положил нужную библиотеку рядом с бинарником, запускаю - незапускается.
Код: pi@raspberrypi:~/GatewayVoda $ ls Обычно, если нет библиотеки, то ищется библиотека в текущей папке. Но тут она есть, а программа её не видит. Почему? Название: Re: Как подключить библиотеку? Отправлено: Old от Июнь 04, 2018, 21:04 Потому что в linux загрузчик никогда не ищет библиотеки в директории с бинарником.
Почитайте man ld.so и про RPATH. Название: Re: Как подключить библиотеку? Отправлено: juvf от Июнь 04, 2018, 22:02 Почитайте man ld.so и про RPATH. Почитал. Проблема осталась. В 2-х словах: собираю портабл приложение. Я не хочу менять какие-то настройки в системе, приписывать пути, менять конфиги ОС. Во первых не хочу на каждой машине это делать, во вторых конечный пользователь не умеет этого делать. Я хочу распаковать папку с бинарником и всеми нужными либами в одном любом месте, запустить бинарник (или скрипт) и чтоб прога заработала. Скрипт не должен менять в системе пути. Папку с бинарником могут полоджить куда угодно. Можно как-то запустит прогу с сказать линуксу "Запути эту прогу, библиотеки ищи в текущей директории"? ps статику не предлагать. Название: Re: Как подключить библиотеку? Отправлено: Old от Июнь 05, 2018, 06:07 Добавьте скрипт в котором будет:
export LD_LIBRARY_PATH=<путь к вашим библиотекам> а после запускайте ваш бинарник. Название: Re: Как подключить библиотеку? Отправлено: juvf от Июнь 05, 2018, 07:21 спасибо, сработало. Но раньше просто помещал рядом все библы, всякие бусты и майэскуэли, и работало.
Для юзерских машин годное решение. Для разработчика не очень. Приложение должно запускаться под gdbserver-ом. Тут я так понял без внесение в ОС каких-то переменных и конфигов не прокатит. Как запустить приложение просто бинарником без префиксных команд? Название: Re: Как подключить библиотеку? Отправлено: Old от Июнь 05, 2018, 09:39 Для юзерских машин годное решение. Для разработчика не очень. Приложение должно запускаться под gdbserver-ом. Тут я так понял без внесение в ОС каких-то переменных и конфигов не прокатит. Как запустить приложение просто бинарником без префиксных команд? Это должно работать и для gdbserver. Эта указание ld.so, разработчик можете добавить эту строку к себе в .bash_profileНазвание: Re: Как подключить библиотеку? Отправлено: qate от Июнь 05, 2018, 09:49 Как запустить приложение просто бинарником без префиксных команд? обычно всегда библиотеки просматриваются и в /usr/local/lib положи туда свои или сделай линки Название: Re: Как подключить библиотеку? Отправлено: juvf от Июнь 05, 2018, 14:34 Это должно работать и для gdbserver. Эта указание ld.so, разработчик можете добавить эту строку к себе в .bash_profile а как? Работаю в эклипсе. там в настройке дебугера есть строка, в которую можно записать аргументы передаваемые программе. но как эклипсу (или гдб серверу в эклипсе) сказать чтобы библиотеки искались в папке с бинарником?Название: Re: Как подключить библиотеку? Отправлено: Old от Июнь 05, 2018, 14:39 а как? Работаю в эклипсе. там в настройке дебугера есть строка, в которую можно записать аргументы передаваемые программе. но как эклипсу (или гдб серверу в эклипсе) сказать чтобы библиотеки искались в папке с бинарником? Переменные среды там можно задавать? Вот QtCreator например это есть. Добавьте туда свою переменную LD_LIBRARY_PATH.Название: Re: Как подключить библиотеку? Отправлено: juvf от Июнь 05, 2018, 14:44 Переменные среды там можно задавать? Вот QtCreator например это есть. Добавьте туда свою переменную LD_LIBRARY_PATH. конечно можно... я думаю....... попробую. Спасибо за подсказку!!! |