当前位置:网站首页>分享一个通用的so动态库的编译方法

分享一个通用的so动态库的编译方法

2022-07-06 17:32:00 wandersky0822

CC      :=$(CROSS_COMPILE)gcc
LD      :=$(CROSS_COMPILE)ld
CFLAGS  := -fPIC -Wall
LDFLAGS :=  -shared -Wl,-soname=libdrdev.so.2
SOURCE  := $(wildcard *.c)
OBJS    := $(patsubst %.c,%.o,$(SOURCE))
TARGET_LIB := libdrdev.so.2.1.0
  
all:$(OBJS)
        @echo $(OBJS)
        # $(LD) $(LDFLAGS) -o $(TARGET_LIB) $(OBJS) 
        $(CC) $(LDFLAGS) -o $(TARGET_LIB) $(OBJS)
  
%.o:%.c
        @echo Compiling $< ...
        $(CC) -c $(CFLAGS)  $< -o $*.o

.PHONY:clean
clean:
        rm $(TARGET_LIB) *.o -rf

几个知识点,解释如下:

-fPIC   位置无关

-shared  顾名思义,生成共享库

$(wildcard *.c)    在文件夹下列出所有.c 文件 
 $(patsubst %.c,%.o,$(SOURCE))  在$(SOURCE)中查找.c文件,替换为.o

%.o:%.c  %通配符,猜也能猜个差不多

$< 所有依赖

$*  所有目标%之前的部分。

原网站

版权声明
本文为[wandersky0822]所创,转载请带上原文链接,感谢
https://blog.csdn.net/wandersky0822/article/details/125605228