#生成动态库 SOURCE := $(wildcard *.c) OBJECT := $(patsubst %.c,%.o,$(wildcard *.c)) LIB := directiver.h macro.h queue.h shared.h uart.h TARGET := libsdk.so CC := gcc DIR := $(shell mkdir -p ../include) RM := rm -rf all:$(TARGET) cptarget cphead $(TARGET):$(OBJECT) $(CC) $(SOURCE) $(LIB) -c -fPIC -I./include $(CC) -shared $(OBJECT) -o $@ -lpthread cptarget: cp $(TARGET) /lib cphead: $(DIR) cp $(LIB) ../include *.o:*.c $(CC) $^ -c $@ .PHONY:clean cplib cphead clean: $(RM) *.so *.o *.gch $(RM) ../include
时间: 2024-04-28 12:19:23 浏览: 75
这段makefile文件是生成动态库的示例代码,它包含了以下几个步骤:
1. 定义了源文件和目标文件的变量;
2. 定义了动态库的名称和编译器;
3. 定义了生成头文件的目录;
4. 定义了清理目标、头文件和中间文件的命令;
5. 定义了生成动态库的命令;
6. 定义了拷贝动态库和头文件的命令;
7. 定义了编译源文件的命令。
具体地,这段makefile文件的执行流程如下:
1. 执行all目标,生成动态库和拷贝头文件;
2. 执行生成动态库的命令,分别编译源文件和链接生成动态库;
3. 执行拷贝动态库的命令,将动态库拷贝到/lib目录下;
4. 执行拷贝头文件的命令,将头文件拷贝到../include目录下;
5. 执行clean目标,清理生成的动态库、中间文件和头文件目录。
需要注意的是,这段makefile文件中使用了一些makefile的高级特性,比如wildcard、patsubst、shell等,需要对makefile有一定的了解才能看懂。同时,这段makefile文件的具体实现也与项目的结构和需求有关,需要根据实际情况进行修改。
阅读全文