Как мне установить DT_RUNPATH с $ ORIGIN из Makefile - PullRequest
0 голосов
/ 18 октября 2018

В качестве примера ниже будет установлено RUNPATH

matthewh@ORAC:~/dev/test$ g++ test.cpp -ldl -Wl,-rpath,\$ORIGIN
matthewh@ORAC:~/dev/test$ objdump -x a.out | grep RUN
  RUNPATH              $ORIGIN

Однако в качестве более сложного примера я пытаюсь установить это для библиотеки, которая компилируется с помощью make-файла, созданного с помощью configure.

Я запускаю

export LDFLAGS=-Wl,-rpath,\$ORIGIN
./configure
make
objdump -x library.so | grep RUN
  RUNPATH              RIGIN

Очевидно, что Make расширяет $ O вместо ввода буквального значения $ O в вывод.

Как мне преодолеть это?Я попытался избежать этого, но он представляет странный вывод в runpath.

Хорошо, в частности, я пытаюсь скомпилировать ilmbase-2.2.1 из OpenEXR и установить RUNPATH.Это сложнее, чем отдельный Makefile, так как он использует рекурсивный Make!

Makefile верхнего уровня заканчивает тем, что устанавливает переменную LDFLAGS = Я пытался вручную отредактировать это как $$ ORIGIN, как предлагалось в других местах, но все же,это выглядит как -Wl, -rpath, RIGIN

Теперь я немного застрял.Если не считать его редактирования после того, как путь задан, переписав его с помощью какого-то редактора ELF, который уродлив.

1 Ответ

0 голосов
/ 18 октября 2018

Ого.Кажется, это работает.

./configure LDFLAGS='-Wl,-rpath,\$$ORIGIN'

Волшебство \ $$ против всего $$

Что означает обратный слеш в gnu make?

...