作为示例,下面将设置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并设置运行路径。它比单个Makefile更复杂,因为它使用递归Make!
顶层Makefile最后设置变量LDFLAGS=
我尝试过手动编辑它,使之成为$$ORIGIN,正如在其他地方所建议的那样,但仍然是通过-Wl、-rpath、RIGIN实现的
现在我有点困了。在路径设置完成后,用某种丑陋的ELF编辑器重写它。