Страницы

Поиск по вопросам

четверг, 14 февраля 2019 г.

GCC, линковка с динамической библиотекой

Я пользуюсь linux. В папке с main.cpp у меня лежат inc_Abc.h и libAbc.so. Всё это я собираю командой:
g++ -o main main.cpp -L. -lAbc
Потом запускаю ./main, но появляется ошибка:
./main: error while loading shared libraries: libAbc.so: cannot open shared object file: No such file or directory
Почему main не видит libAbc.so, который находится в той же папке?
Я знаю, что этот вопрос можно решить, сделав папку с main -- папкой поиска *.so файлов, с помощью ldconfig. Нельзя ли как-то по-другому это решить?


Ответ

для разработки или тестирования вполне подойдёт использование переменной окружения LD_LIBRARY_PATH. она может содержать разделённые двоеточием пути для поиска библиотек. текущий каталог, как и обычно, можно обозначить точкой
можно передавать переменную непосредственно при вызове программы:
$ LD_LIBRARY_PATH=. ./main
или экспортировать в текущем экземпляре оболочки:
$ export LD_LIBRARY_PATH=.
тогда в этом экземпляре оболочки можно запускать вашу программу и так:
$ ./main

Комментариев нет:

Отправить комментарий