Получение «ошибки при загрузке общих библиотек» при использовании -L, чтобы специально найти библиотеку - PullRequest
4 голосов
/ 28 апреля 2010

Я пытался решить эту проблему уже несколько часов. Я компилирую некоторые файлы c, используя gcc. Для файлов требуется libpbc, поэтому я использую флаг -L, чтобы указать gcc на каталог, содержащий libpbc.so.1. Код компилируется без ошибок, но когда я пытаюсь его запустить, я получаю следующее сообщение об ошибке:

. / Example.out: ошибка при загрузке общих библиотек: libpbc.so.1: невозможно открыть общий объектный файл: такого файла или каталога нет

Глядя на похожие вопросы, это сообщение об ошибке указывает на то, что gcc не может найти libpbc.so.1. Я знаю, что gcc видит libpbc.so.1, потому что когда я переименовываю libpbc.so.1 во что-то еще, он не может скомпилироваться.

Я использую -L для указания на каталог, который содержит libpbc.so.1.

Не уверен, какие дальнейшие шаги я могу предпринять, чтобы понять это. Буду признателен за любые идеи. Что конкретно означает это сообщение об ошибке?

EDIT

Запуск ldd example.out приводит к:

linux-gate.so.1 =>  (0xb7fe3000)
libpbc.so.1 => not found
libgmp.so.3 => /usr/lib/libgmp.so.3 (0xb7f87000)

Ответы [ 2 ]

6 голосов
/ 28 апреля 2010
ldd example.out

Это даст много полезной информации о динамических ссылках. Более конкретно, ваша проблема, скорее всего, связана с отсутствием пути к библиотеке.

/etc/ld.so.conf

Обратите внимание, что если вы обновите этот файл, вы должны запустить

ldconfig -v
0 голосов
/ 21 апреля 2019

Укажите флаг rpath при компиляции.

g++ -Wall -o example.out -I ./include/ -L ./examplelibPath -Wl,-rpath ./libPath -l examplelibrary example.cpp
...