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

时间:2015-05-11 16:50:31

标签: c makefile

我有3个文件应该包含在静态库(file1.c,file2.c,file3.c)中,还有一个文件应该包含main函数(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)

创建了库但是没有创建可执行文件(all:(CC)-o $(EXECUTABLE)main.c $(OUT)) 知道需要什么吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,将处理Makefile中的第一个目标。在您的情况下,这是.c.o目标。要使all默认目标移至顶部。许多人更喜欢all不做任何事情而是依赖别人的风格。这些方面的东西:

all: $(EXECUTABLE)

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

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