LD_LIBRARY_PATH不包含导出路径

时间:2016-09-01 11:28:17

标签: c++ c linux makefile

尝试以下面提到的方式通过make文件导出.so的路径

安装数据-AM:

    export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'$(PWD)'
    echo $$LD_LIBRARY_PATH

但是如果回显$ LD_LIBRARY_PATH它仍然是空白的。请提前帮助我,

1 个答案:

答案 0 :(得分:3)

Makefile中的每个目标语句都是一个独立的语句,可以在子shell中执行。执行完成后,make启动一个新的子shell来执行下一个语句。

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