我有 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)
关于同时为静态库和可执行文件创建 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30173313/