首页 > 学院 > 开发设计 > 正文

linux下动态库.so制作与使用实践(ubuntu14.04)

2019-11-06 06:14:37
字体:
来源:转载
供稿:网友

静态库制作和使用实践,见上一篇博文 http://blog.csdn.net/QQ_26437925/article/details/51541717


linux 动态库 .so 实践如下: 基本文件同上一个静态库的文件,目录如下 这里写图片描述

除了Makefile文件外,其他文件都是相同的。动态库生成需要使用的是 gcc -shared -fPIC 而不是 静态库的ar名利

Makefile

.PHONY: build test cleanCC=gccOBJ_DIR=./objLIB_DIR=./libHEADERS=-I./includeDEBUG=-g -ggdbWALL=-Wall -WCFLAGS=$(WALL) $(DEBUG)LIB_CC=$(CC) $(CFLAGS) $(HEADERS)LIB_OBJ = $(addPRefix $(OBJ_DIR)/, my_math.o my_print.o)prepare: @-if [ ! -d $(OBJ_DIR) ]; then mkdir $(OBJ_DIR); fi @-if [ ! -d $(LIB_DIR) ]; then mkdir $(LIB_DIR); fibuild:prepare $(LIB_DIR)/libmylib.so$(LIB_DIR)/libmylib.so:$(LIB_OBJ) $(CC) -shared -fPIC $^ -o $@$(OBJ_DIR)/%.o:src/%.c $(LIB_CC) -fPIC -c $< -o $@test:a.outa.out:test.c $(LIB_CC) test.c -L$(LIB_DIR) -lmylib clean: @-rm -rf $(OBJ_DIR) @-rm $(LIB_DIR)/libmylib.so @-rm -rf $(LIB_DIR) @-rm a.out

仍然是如下的几个make命令

make build make testmake clean

动态库找不到的解决方法,参考如下博文 http://blog.csdn.net/lqhbupt/article/details/7875112

ldd命令可以打印出可执行文件的共享库文件,一个shell脚本,通过ld-linux.so实现,ld-linux.so先于可执行文件执行,获取控制权,可查看可执行文件的共享库依赖关系。

1 通过环境变量设置

添加了一个LD_LIBRARY_PATH(环境变量文件很多,自行google),source命令生效

这里写图片描述

通过ldd命令查看,并运行 这里写图片描述

2 通过/usr/lib添加使用

直接把.so复制到/usr/lib下,并通过ldconfig命令生效 这里写图片描述

ldd命令查看并运行 这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表