コンパイルしようとすると、ファイルの 1 つで「メインへの未定義参照」エラーが発生します。これは、このファイルに main メソッドがないためです。これは一部のヘルパー メソッドの実装ファイルにすぎないため、実行可能ファイルではなくオブジェクト ファイルにコンパイルするだけです。各ファイルに対して何をすべきかメイクファイルに明示的に指示する場合、これを行う方法は知っていますが、すべてのソースを一度にコンパイルするメイクファイルを作成しようとしています。フラグを使用してみました-c
が、すべてのファイルが実行可能ファイルではなくオブジェクト ファイルのみにコンパイルされました。どうやってこれを行うのですか?ここにあります:
CC = gcc
CFLAGS = -g -Wall
SRCS = ./src/server.c ./src/client_slave.c ./src/sockaddrAL.c
EXECS = ./bin/server ./bin/client_slave
OBJS = $(SRCS:.c=.o)
all: clean $(SRCS) server client
server: $(OBJS)
$(CC) $(CFLAGS) ./src/server.o -o ./bin/server
client: $(OBJS)
$(CC) $(CFLAGS) ./src/client_slave.o -o ./bin/client_slave
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
@rm -f $(EXECS) $(OBJS)