Удалите жестко запрограммированный rpath из исполняемого файла c в Makefile

Мое приложение c ++ имеет один исполняемый файл и несколько локальных общих библиотек. Когда я собираю исполняемый файл, компоновщик (LD) устанавливает исполняемый файл RPATH на путь к локальным общим библиотекам в среде компиляции.

Проблема в том, что когда я собираю RPM приложения и устанавливаю RPM в другой системе, исполняемый файл приложения ищет локальные общие библиотеки в каталоге, в котором они присутствовали в среде компиляции.

Я хочу, чтобы мой исполняемый файл искал локальные общие библиотеки по пути, по которому они установлены RPM, а не по пути, по которому они присутствовали во время компиляции.

Я знаю, что могу изменить RPATH моего исполняемого файла после установки RPM с помощью утилиты chrpath.
Но я хочу автоматизировать это.
Каков предпочтительный способ сделать это. Через флаг LD в Makefile или путем выполнения CHRPATH из файла спецификации RPM. или есть какой-то другой лучший способ.

0

Решение

rpath является флагом компоновщика и, вероятно, установлен в LDFLAGS.
Чтобы удалить его, просто отредактируйте флаги компоновщика в вашем Makefile. Или, если они передаются в вашу среду сборки неоднозначно (они устанавливаются перед вызовом make, и вы не уверены, где), вы можете просто перезаписать их:

LDFLAGS = -your_linker_flags

Надеюсь это поможет

0

Другие решения

По вопросам рекламы [email protected]