Linux下生成动态库的Makefile

本文介绍了一种在Linux环境下使用Makefile构建C/C++动态库的方法。通过定义一系列变量和规则,该Makefile能够适应不同架构的需求,并自动生成所需的动态链接库文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux下的C/C++编程通常需要生成动态库,根据Makefile的语法规定,可以编写下较为通用的Makefile文件

# Generate shared library

# Fetch version number
vernum := $(shell cat ../version 2> /dev/null)

# Sizing up to a growing demand
uniexe := 
my_prefix :=
my_suffix := .$(vernum)

#####################
# Parameter -m32: generate 32 bits codes
# Parameter -m64: generate 64 bits codes
# If not use this parmeter, it will generate coincident codes
# as current operater system.

#####################

libs   :=
CPPFLAGS32 := -m32
LDFLAGS32 := -m32

# Sizing up to a growing demand: predefined variables
# C pre-process parameter
CPPFLAGS := 
# Link parameter
LDFLAGS  :=


CXX := gcc -Wall -ggdb $(SSCFLAGS)
CC  := $(CXX)


LDFLAGS  += $(LDFLAGS32)
CPPFLAGS += $(CPPFLAGS32)
     EXE += $(uniexe)


lnkfile  := $(EXE)
# Generate position independent code
CPPFLAGS += -fPIC
LDFLAGS  += -shared


LDLIBS := $(addprefix -l, $(libs))
SOURCE := $(wildcard *.c) $(wildcard *.cpp)
OBJS   := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))


# Generate *.d files
CPPFLAGS+= -MMD

#####################################
# $addprefix(<prefix>, <name...>)
# Add <prefix> to behind of <name>


# $addsuffix(<suffix>, <name...>)
# Add <suffix> to front of <name>
####################################


BINS := $(addprefix $(my_prefix), $(addsuffix $(my_suffix), $(EXE)))


.PHONY: build objs clean rebuild link


build: $(BINS) $(lnkfile)


objs: $(OBJS)


clean:
        -$(RM) *.o
        -$(RM) *.d
        -$(RM) $(EXE)
        -$(RM) $(BINS)


rebuild: clean build

# For Soft-Link
$(lnkfile):
        @ln -svf $(BINS) $(lnkfile)


$(BINS): $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS)

    在uniexe处添加要生成的动态库名即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值