В качестве примера ниже будет установлено 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, который уродлив.