makefile - 将 $ORIGIN 添加到 LDFLAGS 时遇到困难

标签 makefile compilation linker configure

类似于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 可以递归运行。我发现唯一可靠的方法是在运行 configuremake 的 shell 中另外定义 export ORIGIN='$ORIGIN',这样,即使 shell 扩展了 $ORIGIN,它仍然会产生值 $ORIGIN

另请注意,您还需要 -Wl,-z,origin 才能在运行时解释值 $ORIGIN

关于makefile - 将 $ORIGIN 添加到 LDFLAGS 时遇到困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62034115/

相关文章:

recursion - 递归结交—— friend 还是敌人?

c - C 中的多个源文件- makefile 究竟如何工作?

c++ - 从 int 到 char 的转换可能会改变它的值

compilation - Erlang 编译 - Erlang 作为独立的可执行文件

c++ - 发布构建时间在 VS2008 中花费很长时间

c++ - 模块 ilink32.dll 中的访问冲突

linux - MakeFile 不像可执行文件那样发光

c - makefile 替换没有像预期的那样工作

c++ - 哪些编译器选项用于在 Visual Studio 中编译 C++ STL 类/函数?

c++ - VS2012下头文件修改函数模板时构建不一致