【发布时间】:2016-12-04 10:08:54
【问题描述】:
我有以下 makefile 应该构建 procdriver.c 并因此输出一个 .ko 文件。问题是,即使我删除了 procdriver.c,我的 makefile 似乎也能够构建一个 procdriver.ko 文件。我想尝试找出它每次从哪里获取它正在构建的源文件。
TARGET = procdriver
obj-m := procdriver.o
procdriver-objs+= gpioLib.o
KDIR:= /home/pi/myRpi/linux
PWD := $(shell pwd)
all: gpioLib.o procdriver.c
echo<<"in all"
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
rm -r -f .tmp_versions *.mod.c .*.cmd *.o *.symvers
gpioLib.o: gpioLib.c gpioLib.h
gcc -c gpioLib.c -o gpioLib.o
clean:
make -C $(KDIR) SUBDIRS=$(PWD) clean
这是 Makefile 的输出:http://paste.ubuntu.com/23575533/
编辑
remake 命令的全部输出:http://paste.ubuntu.com/23577274
我认为这是输出中最重要的一点:http://pastebin.com/0vj9aNMg
【问题讨论】:
-
通常 makefile 不会构建源文件。
-
@Olaf 在这种情况下你有什么建议?因为当我删除 procdriver.c 时,它会输出一个 procdriver.ko 文件。这是不应该发生的。
-
使用
remake调试Makefile-s -
@BasileStarynkevitch 谢谢我尝试了 remake 命令我认为这是输出中最重要的一点:pastebin.com/0vj9aNMg 正如你突然看到的那样,它仍然可以制作 procdriver.o
-
@Olaf 通常 Makefiles 至少会尝试构建源文件(从 yacc/lex 文件,或通过检查 RCS 或 SCCS 文件。)但我认为这不是问题所在......
标签: c linux makefile compilation