У меня есть следующая проблема: Я пытаюсь создать переносимую версию моей программы, поэтому я установил rpath в " «. поэтому все библиотеки связаны с использованием относительного пути к файлу. И это работает для всех библиотек, кроме одного. По какой-то причине программа работает только в том случае, если одна конкретная библиотека присутствует в той же позиции, с которой она была связана, когда она была скомпилирована. Это тот, который я написал сам, у которого также есть свой путь к «.». Таким образом, программа откажется запускаться, даже если библиотека находится в том же месте, что и исполняемый файл.
Я проверял, что проблема в том, что только одна библиотека, потому что, если я создам папку, в которой на моем компьютере на компьютере установлена программа libry, программа запустится.Linux C++ пытается загрузить одну конкретную библиотеку, используя абсолютный путь, в то время как все остальные связаны с относительным
linux-vdso.so.1 => (0x00007ffcc5961000)
libOgreHlmsPbs.so.2.1.0 => ./libOgreHlmsPbs.so.2.1.0 (0x00007fedeec3f000)
libOgreHlmsUnlit.so.2.1.0 => ./libOgreHlmsUnlit.so.2.1.0 (0x00007fedeea1d000)
libOgreMain.so.2.1.0 => ./libOgreMain.so.2.1.0 (0x00007fedee194000)
/home/marvin/workspace/HLMS_DS_DEMO/libHLMS_DS.so => not found
Так ли кто-нибудь есть идея, что может привести к Linux пытается найти библиотеку в первоначальном месте, а не в относительном один, как все остальные? Также программа отлично работает на окнах.
Вы хотите установить rpath относительно текущего каталога ('$ PWD') или относительного места выполнения? – yugr
Почему бы не просто следовать правилам -I? [Параметры каталога GCC] (https://gcc.gnu.org/onlinedocs/gcc/Directory-Options.html#Directory-Options) – Ripi2
относительно исполняемого местоположения оптимально – user2741831