c - 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 = 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 *~

谢谢

最佳答案

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

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

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

Makefile- not outputting the executable

添加目标:

 all: main

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

关于c - Makefile-不输出可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17643628/

相关文章:

c++ - "stdio"和 "stdlib"在 C 中代表什么?

c - 为什么指向字符串的指针存储在 .rodata 中,而指向 int 的指针却在堆栈上?

c - 如何在节点结构中实现字符指针?

c++ - 如何在 makefile 中的依赖项中写入 "or"?

c - 关于指针的奇怪的事情

c++ - Ifstream 在 OSX 上看不到新内容

macos - OSX 终端在没有提示的情况下从命令行关闭当前选项卡?

c++ - Mac OS OpenGL 屏幕抓取

java - 无法执行二进制文件 - 可执行 Jar 文件

makefile - "$(@:H)"在 MakeFile 中做什么?