Как я могу изменить путь к библиотеке исполняемого файла после его сборки / установки? - PullRequest
0 голосов
/ 27 июня 2018

Допустим, я строю myTest с помощью cmake. myTest использует /opt/path1/lib/lib.so во время компиляции и компоновки. После нескольких попыток я решил, что теперь myTest должен использовать /opt/path2/lib.so (то же имя lib, те же интерфейсы, просто другой путь).

Это может быть связано с тем, что я хочу временно протестировать изменения в lib.so, не затрагивая других, которые могут его использовать. У меня также может не быть источника myTest, но я знаю, что он использует lib.so.

Если я использовал Makefile и использовал обычный gnu / g ++ make, я могу сделать это, установив LD_LIBRARY_PATH в локальной папке. CMake игнорирует LD_LIB_PATH - так как мне это сделать?

1 Ответ

0 голосов
/ 28 июня 2018

Для поиска библиотеки во время выполнения ldd использует (среди прочего) RPATH каталоги, встроенные в исполняемый файл.

По по умолчанию при сборке исполняемого файла / библиотеки CMake добавляет каталоги RPATH, где расположены связанные библиотеки.

Например, при связывании с библиотекой /opt/path1/lib/lib.so, CMake добавляет каталог /opt/path1/lib в RPATH. Так что ldd всегда находит lib.so библиотеку как /opt/path1/lib/lib.so.

Для указания CMake на не задано RPATH , установить CMAKE_SKIP_RPATH переменная:

set(CMAKE_SKIP_RPATH TRUE)

После этого ldd будет искать lib.so в каталоге, указанном в LD_LIBRARY_PATH переменной среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...