makefile的动态库的生成

本文详细介绍使用Makefile构建动态库的过程,包括设置源文件、目标文件、编译选项及链接库,适用于需要链接多个文件和动态库的复杂项目。

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

makefile 文件的创建需要很多的文件和动态库链接的情况下,本人自己尝试写的一点东西,编译生成一个动态库,做了一点总结:

*******(简单的不做解释)*******

//目录下的的所有。cpp文件(有一些个别的在你的目录中不需要的可以删除)

   SRCS    :=$(wildcard *.cpp)

//目标(要生成的文件名,我需要的是这个名字,自行调整,一定是  lib 开头 .so 结尾,因为我要用的是动态库)

TARGET     := libHxDecMsg.so

//编译包含的头文件所在目录 (必须 -I  带引用到的头文件目录)
INCLUDES  := -I. -I /usr/local/jdk1.6/include/ 。。。。。。 -I /home/www/openssl-1.0.2h/include/  -I /usr/lib64/

//这里我引用的库 原名是  libssl.a   libcrypto.a  和   libjsoncpp.a  这三个库,多的可以自行按照模式增加

CLIBS   := -L /usr/local/ssl/lib/ -lssl -lcrypto  -L /usr/local/lib64/ -ljsoncpp

//把源文件SRCS字符串的后缀.cpp 生成 .o  文件,由于SRCS有个别包含详细地址的,生成的.o文件也是详细地址 

OBJS    :=$(patsubst %cpp, %o, $(SRCS))

最关键是编译命令行的内容,基本可以直接套用(小编我也是躺在命令上好久的)命令行之前是 Tab 键,必须是,不解释

Makefile有三个非常有用的变量。分别是$@,$^,$<代表的意义分别是:

$@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件。

下面我的具体代码是这样的:

VPATH   := math:.
CC      := g++
CFLAGS  :=-Wall -std=c++11 -O2 -shared -fPIC
TARGET  := libHxDecMsg.so
INCLUDES:=-I. -I. -I /usr/local/jdk1.6/include/ -I /usr/local/jdk1.6/include/linux/ -I /usr/local/ssl/include/   -I /home/www/openssl-1.0.2h/include/  -I /usr/lib64/
CLIBS   := -L /usr/local/ssl/lib/ -lssl -lcrypto  -L /usr/local/lib64/ -ljsoncpp
SRCS    :=$(wildcard *.cpp)
OBJS    :=$(patsubst %cpp, %o, $(SRCS))
all     : $(TARGET)
$(TARGET): $(OBJS)
        $(CC) $(CFLAGS) $(OBJS) -o $@ $(CLIBS)
%.o:%.cpp
        $(CC) -c -pthread $(INCLUDES) $(CFLAGS) $^ -o $@
clean:
        rm -rf *.o $(TARGET) $(OBJS)

好的,下面顺带附上我的 gcc编译的原文:

g++ -Wall -std=c++11 -pthread -shared -fPIC  -I /usr/local/jdk1.6/include/ -I /usr/local/jdk1.6/include/linux/ -I /usr/local/ssl/include/ -I /home/www/openssl-1.0.2h/include/ -I /usr/local/src/hxdec/jni_20181008/  HxDecMsg_JNI.cpp icinfo_file.cpp icinfo_decrypt.cpp icinfo_header.cpp sm4.cpp DeBase64.cpp  HxSm2Encrypt.cpp  HxCertificate.cpp HxParam.cpp IParamIn.cpp  -L /usr/local/ssl/lib/ -lssl -lcrypto  -L /usr/local/lib64/ -ljsoncpp -o libHxDecMsg.so

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值