Есть ноутбук, на котором у меня нет прав 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 .
В нем представлены статические / совместно используемые / динамически загружаемые библиотеки, а также некоторые примеры кода для их использования.