GNU ld: -z происхождение? -rpath $ ORIGIN /../ lib? - PullRequest
1 голос
/ 25 марта 2020

Унаследованный make-файл, который я пытаюсь понять, имеет -Wl,-z,origin,-rpath,'$ORIGIN/../lib'

ОК, я вижу -Wl означает, что ниже приведены параметры компоновщика; запятые будут заменены пробелами.

Страница руководства для GNU ld загадочно говорит только:

   -z keyword
       The recognized keywords are:
           :
           :
       origin
           Marks the object may contain $ORIGIN.

Аналогично, следующая опция -rpath (относительный путь?) содержит это $ORIGIN предполагает, что это какое-то ключевое слово, но $ORIGIN не упоминается иначе на справочной странице ld.

1 Ответ

2 голосов
/ 25 марта 2020

$ORIGIN упоминается в разделе Последовательности замещения в спецификации ELF. DF_ORIGIN также задокументировано .

Однако, хотя GNU ld поддерживает установку флага DF_ORIGIN с параметром -z origin, загрузчик динамического c в glib c всегда соблюдает $ORIGIN, даже если флаг не установлен. Это означает, что нет причин использовать флаг редактора ссылок при сборке для GNU / Linux.

...