版权声明:转载请声明~ https://blog.csdn.net/weixin_38890593/article/details/89500105
要编译内核改写Makefile的时候发现关于cd的一些问题
我需要创建一个环境变量为上一级目录的路径,代码如下:
cd ../
export SRCBASE := $(shell pwd)
执行make,提示:Makefile:15: *** missing separator. Stop.
执行命令需要TAB符在前(前面加一个TAB),修改后如下:
cd ../
export SRCBASE := $(shell pwd)
执行make,发现SRCBASE并不是当前的上级目录!
原因是cd命令在Makefile中只在当前行生效!
正确写法应该是这样:
cd ../ && export SRCBASE := $(shell pwd)
下面看简单的事例:
编辑一个Makefile
1
2 all:
3 cd ../ && pwd
4 pwd
在test目录下执行make
root@:~/test$ make
cd ../ && pwd
/home/root
pwd
/home/root/test
注:我的test目录的上一级目录就是root目录
可以看到第一句命令cd ../生效了,但是第二命令pwd打印的是test,而不是root