Makefile-不输出可执行文件

时间:2013-07-14 20:48:58

标签: c macos makefile

我是makefile的新手。我不确定为什么编译后不会出现可执行文件'main'。代码编译得很好,但编译器说:

-lm: linker input file unused because linking not done

-ltiff: linker input file unused because linking not done

下面是makefile代码:

INCLUDES = -I. -I../include -I/opt/local/include
CC = gcc
OBJS = image_io.o textfile_io.o main.o
CFLAGS = $(INCLUDES) -c -g
DESTDIR = ../bin
LDFLAGS = -L. -L../lib -L/opt/local/lib -lm
DEPS = file_io.h corr.h nmsimplex.h matrix.h /opt/local/include/tiffio.h \
       /opt/local/include/tiff.h

image_io.o: image_io.c file_io.h /opt/local/include/tiffio.h \
               /opt/local/include/tiff.h
    $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) -ltiff

textfile_io.o: textfile_io.c file_io.h
    $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)

main.o: main.c file_io.h nmsimplex.h corr.h
    $(CC) $(CFLAGS) -o $@ -fopenmp $< $(LDFLAGS)

main: $(OBJS)
    $(CC) -o $(DESTDIR)/$@ -fopenmp $^ $(LDFLAGS)

.PHONY: clean
clean:
    rm -f *.o *~

谢谢

1 个答案:

答案 0 :(得分:2)

为什么你会收到两个警告:

main.o: main.c file_io.h nmsimplex.h corr.h
    $(CC) $(CFLAGS) -o $@ -fopenmp $< $(LDFLAGS)

您正在编译不链接,不需要将$(LDFLAGS)作为链接器标志。这些标记仅与main目标相关,而与main.o目标无关。

  

Makefile-不输出可执行文件

添加目标:

 all: main

DEPS定义之后。 all目标将首先执行,并将执行main目标。