同时为静态库和可执行文件创建makefile

create makefile for static library and executable simultaniously

我有 3 个文件应该包含在静态库中(file1.c、file2.c、file3.c)和一个应该包含主要函数的文件(main.c 文件) 并链接到静态库。

我想创建一个 makefile 来创建库,然后创建可执行文件。

我的基础 makefile 是:

CC=gcc
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=file1.c file2.c file3.c
OBJECTS=$(SOURCES:.c=.o)
OUT=libctest.a
EXECUTABLE=hello
LDFLAGS = -static

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

$(OUT): $(OBJECTS)
    ar rcs $(OUT) $(OBJECTS)

all:
    (CC) -o $(EXECUTABLE) main.c $(OUT)

clean:
    rm -f $(OBJECTS) $(OUT)

库已创建但可执行文件未创建(全部:(CC) -o $(EXECUTABLE) main.c $(OUT)) 知道需要什么吗?

Make 将默认处理 Makefile 中的第一个目标。在您的情况下,这是 .c.o 目标。要使 all 成为默认目标,请将其移至顶部。许多人更喜欢 all 什么都不做,而是依赖他人的风格。类似的东西:

all: $(EXECUTABLE)

$(OUT): $(OBJECTS)
    ar rcs $(OUT) $(OBJECTS)

$(EXECUTABLE): main.c $(OUT)
    (CC) -o $(EXECUTABLE) main.c $(OUT)