类似于this post ,我需要通过$ORIGIN/../lib
到我的编译过程。我正在通过
./configure "LDFLAGS=-Wl,-rpath,\$\$ORIGIN/../lib"
make
但是,当我通过 objdump -x src/foo | grep PATH
检查可执行文件时,我明白
/home/Users/me/foo_repo/lib:/../lib
当我想要的是
/home/Users/me/foo_repo/lib:$ORIGIN/../lib
所以它看起来像$ORIGIN
正在评估,而不仅仅是放入 RUNPATH
如何防止这种情况发生?我尝试为 $
添加转义符但得到相同的结果。
最佳答案
我尝试了很多次,似乎在某些时候它仍然可能被解析为空字符串,因为 Makefile 可以递归运行。我发现唯一可靠的方法是在运行 configure
和 make
的 shell 中另外定义 export ORIGIN='$ORIGIN'
,这样,即使 shell 扩展了 $ORIGIN
,它仍然会产生值 $ORIGIN
。
另请注意,您还需要 -Wl,-z,origin
才能在运行时解释值 $ORIGIN
。
关于makefile - 将 $ORIGIN 添加到 LDFLAGS 时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62034115/