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 会启动一个新的 subshel​​l 来执行下一条语句。

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 不包含导出的路径的主要内容,如果未能解决你的问题,请参考以下文章

gcc编译选项

导出 LD_LIBRARY_PATH 后加载库事件时出错

Linux环境变量设置(PATH/LIBRARY_PATH/LD_LIBRARY_PATH)

为啥我不能用 LD_LIBRARY_PATH 覆盖动态库的搜索路径?

LD_LIBRARY_PATH 不工作,而 LD_PRELOAD 工作正常

如何将 cuDNN 更新到较新版本?