Makefile "no such file or directory. stop" with cygwin64 on Windows



我正试图使用android NDK在我的windows 10 pc上编译某个android内核模块。

我尝试使用以下Makefile构建它:

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 29
EXTRAVERSION =
obj-m := test.o
PWD := $(shell pwd)
default:
$(MAKE) ARCH=arm64 CROSS_COMPILE=/home/AndroidNDK/android-ndk-r21d/toolchains/aarch64-linux- android-4.9/bin/aarch64-linux-android- -C  $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KERNEL_PATH) SUBDIRS=$(PWD) clean

但不断得到这个错误:

make ARCH=arm64 CROSS_COMPILE=/home/AndroidNDK/android-ndk-r21d/toolchains/aarch64-linux-android-4.9/bin/aarch64-linux-android- -C   SUBDIRS=/cygdrive/c/Project  modules
make[1]: *** SUBDIRS=/cygdrive/c/Project: No such file or directory.  Stop.
make: *** [Makefile:11: default] Error 2
  • 我从github获取了Makefile并对其进行了一些更改
  • 模块源文件称为test.c

知道我为什么会出现这个错误吗?

很明显为什么会出现这个错误。看看make正在运行的命令:

make ARCH=arm64 CROSS_COMPILE=... -C   SUBDIRS=/cygdrive/c/Project  modules

请注意字符串SUBDIRS=/cygdrive/c/Project是如何位于-C选项之后的。什么是-C选项?查看GNU make手册,发现它提供了一个make应该在启动前更改的目录。

所以,你告诉make"改变到名为CCD_ 4"的目录;当然那个目录不存在,所以你会得到那个错误。

为什么你的命令行是这样的?看看你写的规则:

default:
$(MAKE) ARCH=arm64 CROSS_COMPILE=... -C  $(KERNEL_DIR) SUBDIRS=$(PWD) modules

因此,在假定-C是变量KERNEL_DIR的值之后。

但是,在makefile中,您还没有定义变量KERNEL_DIR,所以当make展开它时,它会展开为空字符串。

最新更新