Linux 在Makefile中设置环境变量

Linux 在Makefile中设置环境变量,linux,bash,makefile,environment-variables,Linux,Bash,Makefile,Environment Variables,如何将setenv LD\u LIBRARY\u路径添加到Makefile?当我在Makefile中使用相同的术语,然后使用echo$LD_LIBRARY_PATH回送变量时。我总是收到结果,即使在另一个文件夹中也不是绝对路径,我收到此错误setenv LD_LIBRARY_PATH。make:setenv:Command not found ll:libmem.v1 libmem.v1: gcc -g -c -fpic libmem.v1.c -Wall gcc -share

如何将
setenv LD\u LIBRARY\u路径添加到
Makefile
?当我在Makefile中使用相同的术语,然后使用
echo$LD_LIBRARY_PATH回送变量时。
我总是收到
结果,即使在另一个文件夹中也不是绝对路径,我收到此错误
setenv LD_LIBRARY_PATH。
make:setenv:Command not found

ll:libmem.v1

libmem.v1:
    gcc -g -c -fpic libmem.v1.c -Wall
    gcc -shared -o libmem.so libmem.v1.o
    gcc -lmem -L. -o main main.c -Wall 
    setenv LD_LIBRARY_PATH .

clean:
    rm -f libmem.v1
    rm -f *.py

我该如何解决这个问题?

你的问题不清楚,所以我得猜你的意思

setenv
命令是C shell的一部分,它不是Make的默认命令。您必须设置它:

SHELL = csh
然后,如果要使用该变量,则必须使用设置该变量的同一命令,因为每个命令都在其自己的子shell中操作。此外,请记住避开“$”:

如果希望
LD_LIBRARY_PATH
的值为绝对路径,而不仅仅是“.”,则必须将其设置为绝对路径:

libmem.v1:
    setenv LD_LIBRARY_PATH $(PWD) ; echo $$LD_LIBRARY_PATH

csh
与make一起使用确实不起作用
csh
有一些完全奇怪和非标准的“特性”;例如,它自己关闭各种文件描述符,这意味着并行构建无法正常工作。我本以为到2013年,csh将悄无声息地死去,这是当之无愧的,当然是在编写脚本方面。看到新来的人仍在使用它,我感到非常难过:-(。趁现在还不太晚,赶快出去!!
libmem.v1:
    setenv LD_LIBRARY_PATH $(PWD) ; echo $$LD_LIBRARY_PATH