Не удается найти общие библиотеки, даже если -rpath установлен правильно - PullRequest
0 голосов
/ 24 ноября 2018

Я создаю стороннюю программу, которая использует библиотеки из каталога, который не установлен в /etc/ld.so.conf - поэтому я связываю программу с параметром -rpath.

Запуск objdump -x bin/GetHistPrices | grep -i path для проверкиесли -rpath установлен правильно, я получаю подтверждение, что все в порядке:

RUNPATH 
   /application/FXCM-API/GetHistPrices/bin:
   /application/FXCM-API/lib:
   /application/FXCM-API/sample_tools/lib

cmake копирует все библиотеки в один каталог, в котором генерируется исполняемый файл [eq ../GetHistPrices/bin];поэтому 1-й путь в порядке.

Более того, последние 2 пути также указывают на каталоги, в которых расположены общие библиотеки - эти параметры -rpath автоматически добавляются сценарием cmake.

Когда я пытаюсь запустить программу НЕ в каталоге ../GetHistPrices/bin/ [где он находится] - eq, я не запускаю ее с ./GetHistPrices - поэтому я получаю это сообщение об ошибке:

bin / GetHistPrices: ошибка при загрузке общих библиотек:

  libgsexpat.so: cannot open shared object file: No such file or directory

Программа запускается только тогда, когда я запускаю ее из каталога bin/ или /application/FXCM-API/lib, посколькутам находится нужная библиотека.

1)
Когда я запускаю программу с
LD_LIBRARY_PATH="/application/FXCM-API/GetHistPrices/bin" bin/GetHistPrices
, она запускается.Но это то, что я вижу и в исполняемом файле.Странно!

2)
Добавление /application/FXCM-API/GetHistPrices/bin к /etc/ld.so.conf позволяет также успешно запустить программу.

ОС - это SLES 12.3 - честно, как-товыглядит как ошибка в системе.

Мой вопрос:

Что я делаю не так, что он не работает, даже если RUNPATH правильно установлен висполняемый файл.

...