Как указать нестандартный путь к разделяемой библиотеке в GCC Linux? Получение «ошибки при загрузке разделяемых библиотек» при запуске

Есть ноутбук, на котором у меня нет прав root.

на машине У меня установлена ​​библиотека с использованием configure --prefix = $ HOME / .usr .

после этого я получил эти файлы в ~ / .usr / lib :

libXX.so.16.0.0
libXX.so.16
libXX.so
libXX.la
libXX.a

, когда я компилирую программу, которая вызывает одну из функций, предоставляемых библиотекой, с помощью этой команды: gcc XXX.c -o xxx.out -L $ HOME / .usr / lib -lXX

xxx.out был сгенерирован без предупреждения, но когда я его запустил, возникла такая ошибка:

./ xxx.out: ошибка при загрузке разделяемых библиотек: libXX.so.16: невозможно открыть файл общих объектов: нет такого файла или каталога , хотя libXX.so.16 находится там.

Мое предположение без подсказки состоит в том, что поиск в ~ / .usr / lib не выполнялся при вызове xxx.out. но что я могу сделать, чтобы указать путь к .so, чтобы xxx.out мог искать там файл .so?

Кроме того, когда я загружаю -статический в gcc, возникает другая ошибка, например это:

undefined reference to `function_proviced_by_the_very_librar'

Кажется, .so не имеет значения, даже если -L и -l даны gcc. что мне делать, чтобы создать пригодный для использования exe с этой библиотекой?


Для других людей, у которых есть тот же вопрос, что и у меня

, я нашел полезную статью об этом на tldp .

В нем представлены статические / совместно используемые / динамически загружаемые библиотеки, а также некоторые примеры кода для их использования.

56
задан Ciro Santilli 新疆改造中心法轮功六四事件 2 November 2015 в 09:16
поделиться