<分区>
我有以下生成文件(片段)
INSTALL_LIB = /usr/local/lib
...
install:
@echo libs are at $(INSTALL_LIB)
LD_LIBRARY_PATH=$(INSTALL_LIB)
@echo libs will be installed at $(LD_LIBRARY_PATH)
但是,make install
将导致:
lib path is /usr/local/lib
LD_LIBRARY_PATH=/usr/local/lib
libs will be installed at
得到同样的结果
export LD_LIBRARY_PATH=$(INSTALL_LIB)
或
export LD_LIBRARY_PATH="$(INSTALL_LIB)"
我确信我遗漏了一些关于 make 工作原理的基本知识,但是搜索网络并没有产生任何具体的东西。
更让我困惑的是
LD_LIBRARY_PATH= $(INSTALL_LIB)
结果
/bin/sh: /usr/local/lib: is a directory
和
LD_LIBRARY_PATH = $(INSTALL_LIB)
结果
/bin/sh: LD_LIBRARY_PATH: command not found
------------编辑----------------
根据建议,我将 makefile 更改为:
INSTALL_LIB = /usr/local/lib
...
install:
@echo libs are at $(INSTALL_LIB)
@LD_LIBRARY_PATH=$(INSTALL_LIB);\
echo libs will be installed at $$LD_LIBRARY_PATH
并且输出如预期的那样:
lib path is /usr/local/lib
libs will be installed at /usr/local/lib
这解决了这个问题。 (但是,我仍然想知道如何使 LD_LIBRARY_PATH
在 makefile 实例之外可用,例如在命令行上)