如何使用Makefile中的$ ORIGIN设置DT_RUNPATH

时间:2018-10-18 08:33:36

标签: linux makefile gnu-make ld

作为示例,以下将设置RUNPATH

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

但是,作为一个更复杂的示例,我试图为使用由configure生成的makefile编译的库设置此参数。

我跑步

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

很明显,Make正在扩展$ O,而不是在输出中放置原义的$ O。

我该如何克服?我尝试将其转义,但它会将奇怪的输出呈现给runpath。

好吧,特别是我正在尝试从OpenEXR编译ilmbase-2.2.1并设置RUNPATH。它比使用递归Make的单个Makefile更为复杂!

顶层Makefile最终将变量LDFLAGS =设置为 我尝试按照其他地方的建议手动将其编辑为$$ ORIGIN,但仍然通过-Wl,-rpath,RIGIN

现在我有点卡住了。设置路径后,很难通过使用某种难看的ELF编辑器重写它来进行编辑。

1 个答案:

答案 0 :(得分:1)

哦,哇。这似乎可行。

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

神奇的\ $$相对于$$

那么gnu make中的反斜杠是什么意思?