Страницы

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

понедельник, 6 января 2020 г.

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

#cpp #linux #c


Я пользуюсь 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. Нельзя ли как-то по-другому это решить?
    


Ответы

Ответ 1



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

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

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