Linux 下不同目录下文件生成动态库.so

本文介绍如何使用g++命令构建跨平台的共享库。包括在同一目录及不同目录下的源文件编译流程,并提供了一个Makefile示例,帮助读者更好地理解和应用。

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

1、所有文件在一个文件目录下时

   头文件 A.h   B.h  C.h

 源文件A.cpp B.cpp C.cpp

命令:g++ -fPIC -c A.cpp  B.cpp C.cpp 生成各自的.o文件

     g++  -shared  -fPIC  A.o  B.o  C.o  -o libtest.so 

   

2、文件不在一个文件目录下时

在最后用-I把文件目录包含

g++ -fPIC -c  DceTradeChannel.cpp DceTradeLog.cpp Helper.cpp TradeChannelFactory.cpp  -I../include

g++ -shared -fPIC DceTradeChannel.o  DceTradeLog.o Helper.o  TradeChannelFactory.o -o libDceTradeChannel.so


这是运用Makrfile文件的例子

PROGRAM_NAME=tagmat
PROGRAM_HOME=..
LPATH=${PROGRAM_HOME}/${PROGRAM_HOME}/local/lib
LOCALPATH=${FDK}

INCLUDE_TAG=-I${PROGRAM_HOME}/src -I$(LPATH)/../include

CXX=g++
CFLAGS=-O3

SRC=$(wildcard *.cpp)
OBJ=$(patsubst %.cpp,%.o,$(SRC))

#
# Make rules starts here, you should need to edit anything below this line
#
all : ${PROGRAM_NAME}
	@(if [ ! -d ${LPATH} ]; then mkdir ${LPATH}; fi)
	@(mv ${PROGRAM_NAME} ${LPATH}/${PROGRAM_NAME})

${OBJ} : ${SRC} ${HEADER}
	$(CXX) $(CFLAGS) -c ${SRC} ${INCLUDE_TAG}

${PROGRAM_NAME} : ${OBJ}
	$(CXX)  $(CFLAGS) -o ${PROGRAM_NAME} ${OBJ} -L${LPATH}/ -lmatio  -lz  

clean:
	rm -rf *.o ${LPATH}/${PROGRAM_NAME}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值