0

私はメイクファイルが初めてです。コンパイル後に実行可能ファイル「main」が表示されない理由がわかりません。コードは正常にコンパイルされますが、コンパイラは次のように述べています。

-lm: linker input file unused because linking not done

-ltiff: linker input file unused because linking not done

以下はメイクファイルのコードです。

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

ありがとうございました

4

1 に答える 1

2

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ます。

于 2013-07-14T20:52:31.110 に答える