Я создаю стороннюю программу, которая использует библиотеки из каталога, который не установлен в /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
правильно установлен висполняемый файл.