3

新しいファイルをプログラムのコンパイルに統合しようとしています。「routed.o:」行について完全に混乱しています。私のプログラムには、「routed」と呼ばれる 1 つのメイン ファイルと、メイン ファイルによって呼び出される関数を含む 2 つのサポート ファイルがあります。これを単一のプログラムにコンパイルする方法を理解してくれる人はいますか? ありがとうございました!

編集:私はこれを理解しました。後世のために、「愚かな」行をコメントアウトし、機能するものに置き換えました。

CC = gcc
CFLAGS = -c -g -Wall -Wextra
DEPS = routed.h

all: routed_LS

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

helper_funcs.o: helper_funcs.c
    $(CC) -c helper_funcs.c -o helper_funcs.o

dijkstra.o: dijkstra.c
    $(CC) -c dijkstra.c -o dijkstra.o

# routed.o: routed.c helper_funcs.o dijkstra.o
#   $(CC) -c routed.c -o routed.o -o dijkstra.o

routed.o: routed.c
$(CC) -c routed.c

# routed: routed.o helper_funcs.o dijkstra.o
#   $(CC) -o routed routed.o helper_funcs.o dijkstra.o 

routed: routed.o dijkstra.o helper_funcs.o
$(CC) -o routed routed.o dijkstra.o helper_funcs.o  

clean:
    rm -f *.o
    rm -f routed

端末出力は次のとおりです。

rm -f *.o
rm -f routed
gcc -c helper_funcs.c -o helper_funcs.o
gcc -c dijkstra.c -o dijkstra.o
gcc -c routed.c -o routed.o -o dijkstra.o
gcc -o routed routed.o helper_funcs.o dijkstra.o 
i686-apple-darwin11-llvm-gcc-4.2: routed.o: No such file or directory
make: *** [routed] Error 1
4

2 に答える 2

0

あなたがはっきりと言うことができるように、私は自分が何をしているのか本当に理解していませんでした. これを修正した方法は、次の変更でした。

# routed.o: routed.c helper_funcs.o dijkstra.o
#   $(CC) -c routed.c -o routed.o -o dijkstra.o

routed.o: routed.c
$(CC) -c routed.c

# routed: routed.o helper_funcs.o dijkstra.o
#   $(CC) -o routed routed.o helper_funcs.o dijkstra.o 
于 2013-11-12T07:32:29.613 に答える