【问题标题】:I can not figure it out what's wrong in this makefile?我无法弄清楚这个makefile有什么问题?
【发布时间】:2011-12-22 13:26:10
【问题描述】:

我正在尝试编译一个用于基因编程的 C 库,名为 lil-gp

我不知道这类问题是否适合在这里问,但我正在寻求认真的帮助。

makefile 位于目录lilgp1.1/1.1/kernel 下并命名为GNUmakefile.kernel。它看起来像这样:

kobjects = main.o gp.o eval.o tree.o change.o crossovr.o reproduc.o \
    mutate.o select.o tournmnt.o bstworst.o fitness.o genspace.o \
    exch.o populate.o ephem.o ckpoint.o event.o pretty.o individ.o \
    params.o random.o memory.o output.o

kheaders = event.h defines.h types.h protos.h protoapp.h

.PHONY : all clean

LIBS += -lm
CFLAGS += -I. -I$(KERNELDIR) 

all : $(TARGET)

lilgp.h = $(addprefix $(KERNELDIR)/,$(kheaders)) $(uheaders)

$(kobjects) : %.o : $(KERNELDIR)/%.c
    $(CC) -c $(CFLAGS) $< -o $@

$(uobjects) : %.o : %.c
    $(CC) -c $(CFLAGS) $< -o $@

$(kobjects) $(uobjects) : $(lilgp.h)

$(TARGET) : $(kobjects) $(uobjects)
    $(CC) $(LFLAGS) -o $@ $^ $(LIBS) 

clean :
    \rm -f $(kobjects) $(uobjects) core

作为第一步,我遵循了以下步骤:

  1. 我将其重命名为Makefile
  2. 第二次我把上面的all : $(TARGET)移动到clean: ...

但 GNU make 抱怨我:

make: *** No rule to make target `/main.c', needed by `main.o'.  Stop.

【问题讨论】:

  • 内核上面的目录中是否有makefile - 他们可能会定义KERNELDIR
  • 似乎该项目 ftp 站点的链接已失效。我把它上传到另一个位置。请检查一下。谢谢。

标签: c makefile gnu-make


【解决方案1】:

从错误消息中可以清楚地看出$(KERNELDIR) 是空白的。我会在整个项目树中查找 KERNELDIR 这个词,然后从那里获取...

【讨论】:

    【解决方案2】:

    简单的答案:阅读包中包含的文档(尤其是第 3 章和第 6 章)。

    更长的答案:如果您阅读过文档,您就会知道您不应该直接使用GNUmakefile.kernel。您需要选择包中的示例应用程序之一并在其目录中运行 make。每个应用程序目录都包含一个(短)GNUmakefile,其中包括GNUmakefile.kernel
    或者,您可以通过提供自己的顶级 Makefile 来实现自己的问题。

    【讨论】:

    • 实际上我已经读到了 3.1 和 3.4;很遗憾,我没有意识到必须阅读的实际部分介于两者之间。无论如何,感谢您有用的 cmets 和评论家。
    【解决方案3】:

    以下行尝试访问kobjects 中的第一个文件main.c,但由于KERNELDIR 可能未设置而失败。

    $(kobjects) : %.o : $(KERNELDIR)/%.c
    

    通过快速扫描,其他一切似乎都很好。

    尝试修改 Makefile 时请小心,以确保不会遇到missing-separator-errors 之类的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2013-11-21
      相关资源
      最近更新 更多