LD_LIBRARY_PATH 不包含导出的路径
Posted
技术标签:
【中文标题】LD_LIBRARY_PATH 不包含导出的路径【英文标题】:LD_LIBRARY_PATH doesn't contain exported path 【发布时间】:2016-09-01 11:28:17 【问题描述】:尝试通过下面提到的方式通过make文件导出.so的路径
安装数据-am:
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'
echo $$LD_LIBRARY_PATH
但是如果 echo $LD_LIBRARY_PATH 它仍然是空白的。请帮助我,在此先感谢
【问题讨论】:
双$
符号是怎么回事?
How can i pass ENV variables between make targets的可能重复
但它仍然是空白的。遵循与“我如何在 make 目标之间传递 ENV 变量”中建议的相同方式
【参考方案1】:
Makefile
中的每个目标语句都是在子 shell 中执行的独立语句。在它被执行之后,make
会启动一个新的 subshell 来执行下一条语句。
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'
make
启动一个执行此命令的子进程。此命令执行完毕,make
继续执行下一条命令。
echo $$LD_LIBRARY_PATH
make
启动一个子进程来执行这个命令。上一个命令已经执行完毕。前面的命令确实在其环境中设置了LD_LIBRARY_PATH
,但那是古老的历史。那个子进程和它的环境,去了天空中的那个大桶。这个新进程对此一无所知。
您需要将所有内容作为一个语句、一个 shell 迷你脚本执行:
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'; echo $$LD_LIBRARY_PATH
当编写很长的 shell 迷你脚本时,要由 make
作为单个子进程执行,长行可以用反斜杠分隔:
export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'; \
echo $$LD_LIBRARY_PATH
【讨论】:
非常感谢以上是关于LD_LIBRARY_PATH 不包含导出的路径的主要内容,如果未能解决你的问题,请参考以下文章
Linux环境变量设置(PATH/LIBRARY_PATH/LD_LIBRARY_PATH)
为啥我不能用 LD_LIBRARY_PATH 覆盖动态库的搜索路径?