【Linux 动态库封装】

说明

在linux环境下的链接库分为静态链接库(.a)和动态链接库(.so),本篇文章主要说明第一次创建动态库过程遇到的一些问题

makefile

CC = gcc
TARGET = libUdpPara.so

cJSON_p 		= 	./cJSON/%.c
para			=	./udp_para/%.c

cJSON_O 		=	cJSON_Process.o cJSON.o
Para_O			=	udp_para.o 
#	-fPIC是创建与地址无关的编译程序,是为了能够在多个应用程序间共享
#	-shared是指定生成动态链接库
#	LD_LIBRARY_PATH=. 指定先在当前路径寻找链接的动态库.链接动态库时,可以加上一个"-Wl,--rpath=$(DIR)" 选项,可用于指定程序运行时,首先查找的动态库路径。	
	

all:$ $(cJSON_O) $(Para_O) 
	$(CC) $^ -o $(TARGET)  -fPIC -shared


%.o :$(cJSON_p)
	$(CC) -c $<  
%.o :$(para)
	$(CC) -c $< 
	
clean:
	rm $(TARGET) -rf;
	rm ./*.o -rf;
	
install:
	chmod 777 $(TARGET)
	rm $(TARGET) -rf


该makefile可根据自身需要进行修改优化,其中重要的两点就是
 -fPIC		 	确保库与内存地址等无关,便于多个程序调用
 -shared		指定生成动态链接库

由于是第一次封装Linux动态链接库,因此遇到许多问题,封装后,需要提供.h头文件,但是更改头文件的内容,对动态库是没有影响的。

树莓派的动态库有三个位置:

/lib

/usr/lib

/usr/local/lib

初步测试将生成的动态库放到 /usr/local/lib下没有效果,修改 /etc/ld.so.conf.d/libc.conf 可以更改动态库的位置,使用 ldconfig使配置生效。

我测试过程中将生成的动态库放到 /lib 目录下,是可以运行的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值