C Makefile编译错误 - “链接器输入文件未使用,因为链接未完成”

时间:2016-12-09 07:36:23

标签: c bash makefile

我遇到了C Makefile的问题。

这是bash中Makefile的代码:

CC=gcc
CFLAGS=-g -Wall
CCLINK=$(CC)
OBJS=flight.o runway.o airport.o main.o
RM=rm -f

# Creating the executable (airport)
airport: $(OBJS)
    $(CCLINK) -o airport $(OBJS)

# Creating object files using default rules
main.o: main.c airport.h ex2.h flight.h runway.h
airport.o: airport.c airport.h ex2.h flight.h runway.h
runway.o: runway.c runway.h ex2.h flight.h
flight.o: flight.c flight.h ex2.h

# Cleaning old files before new make
clean:
    $(RM) airport *.o *.bak *~ "#"* core

当我制作文件时,它说:

make: `airport` is up to date.

之后 - 我可以用bash打电话给“机场”,它让我按照我想要的方式输入一些输入。

但是当我试图检查“机场”是否由以下人员编制时:

gcc -g -Wall -c airport

我收到错误说:

gcc: airport: linker input file unused because linking not done

有人知道可能是什么问题吗?

谢谢! Gavriel。

1 个答案:

答案 0 :(得分:1)

Makefile的目的是避免重新编译文件,如果文件的来源不变;当它发生时,make表示该文件是最新的。

如果您想再次检查警告,这可能会很烦人。然后,只需通过键入

,调用make重新编译所有内容
make clean ; make

Makefile的另一个目标是避免自己输入gcc命令,容易出错。例如,在问题的最后,您要求从可执行文件(选项-c)创建一个目标文件,这是错误的。制作目标文件的好方法是调用make

make airport.o

最后,要生成可执行文件,您可以键入

make airport

或者,因为airport:是第一个目标,所以输入

make