【问题标题】:Why is this item always executed in the Makefile?为什么这个项目总是在 Makefile 中执行?
【发布时间】:2021-04-16 13:07:06
【问题描述】:

我编写了以下 Makefile。但是当我执行make 命令时,总是会执行语句gcc -shared -o ../lib/libCfunc.so objFile/cacheOp.o objFile/fileOp.o objFile/linuxOp.o objFile/commonFunc.o。即使我没有修改任何文件,并且连续执行了多个make命令。

objFile 不依赖于$(libObjs)?为什么一直执行的只有这句话?

cc=gcc
CFLAGS=-g -O0 -fPIC -lm

libObjs=objFile/cacheOp.o objFile/fileOp.o objFile/linuxOp.o objFile/commonFunc.o 
all:  objFile test
test: testFunc.c  
        $(cc) $^ -lCfunc -o $@ $(CFLAGS) 
objFile: $(libObjs)
        gcc -shared -o ../lib/libCfunc.so $(libObjs)
objFile/cacheOp.o: Bodyer/cacheOp.c Header/cacheOp.h Header/cacheDetails.h
        $(cc) -c $< -o $@ $(CFLAGS)
objFile/fileOp.o: Bodyer/fileOp.c Header/fileOp.h 
        $(cc) -c $< -o $@ $(CFLAGS)
objFile/linuxOp.o : Bodyer/linuxOp.c  Header/linuxOp.h
        $(cc) -c $< -o $@ $(CFLAGS)
objFile/commonFunc.o : Bodyer/commonFunc.c  Header/commonFunc.h
        $(cc) -c $< -o $@ $(CFLAGS)

.PHONY : clean
clean :
        -rm $(libObjs)

【问题讨论】:

  • 为目录的时候为什么要使用objFile这个名字?
  • 谢谢,我没注意到。

标签: c makefile


【解决方案1】:

objFile 文件不存在,因此 Make 尝试构建它。

由于您的规则实际上并未创建名为 objFile 的文件,因此下次运行 Make 时,objFile 文件仍然不存在,因此 Make 会尝试再次构建它。以此类推。

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 2015-05-14
    • 2013-09-16
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多