Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Makefile-不输出可执行文件_C_Macos_Makefile - Fatal编程技术网

C Makefile-不输出可执行文件

C Makefile-不输出可执行文件,c,macos,makefile,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 = im

我不熟悉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 *~
include=-I.-I../include-I/opt/local/include
CC=gcc
OBJS=image\u io.o textfile\u io.o main.o
CFLAGS=$(包括)-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文件_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文件_io.h nmsimplex.h corr.h
$(CC)$(CFLAGS)-o$@-fopenmp$<$(LDFLAGS)
main:$(OBJS)
$(CC)-o$(DESTDIR)/$@-fopenmp$^$(LDFLAGS)
.假冒:干净
清洁:
rm-f*.o*~

谢谢

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

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

就在
DEPS
定义之后。首先执行
all
目标,然后执行
main
target

当你没有链接,只是编译的时候,为什么要把链接器标志包括进来?恐怕不行。你说得对。我对这些条款有点陌生。但谢天谢地,事实上这里有更多的错误。
main
目标的配方不生成
main
,而是生成
$(DESTDIR)/main
。这是不可以的;这意味着每次运行
make
时,即使没有任何更改,它也会重新链接程序。应更改此规则,使目标为
$(DESTDIR)/main
,第一个目标应为
all:$(DESTDIR)/main
 all: main