linux下把log4cxx封装成so动态库文件(一)
来源:互联网 发布:假面骑士555腰带淘宝 编辑:程序博客网 时间:2024/04/29 09:50
这是一个经常遇到的问题,在软件开发过程中,需要将某些功能封装成一个独立的模块,这样维护升级也很方便。现在我们就要把开源日志库log4cxx封装成so动态加载库文件。
在上一篇文章《log4cxx日志库RedHat下安装》中,我们已经将log4cxx安装在home/mac/log4cxx/log4cxx下了,那么接下来的操作我们就继续在这个路径下进行。
还是先tree一下/home/mac/log4cxx这个目录吧
log4cxx---apr---apr-util---log4cxx那再新建四个目录吧
mkdir src lib include bin
再tree一下/home/mac/log4cxx这个目录
log4cxx---apr---apr-util---log4cxx---src---lib---include---bin在/home/mac/log4cxx下新建文件Log.h Log.cpp,这两个文件里面放的内容是你自己写的调用log4cxx库的程序,体现了你自己的封装(将log4cxx库再封装一下给你的其他程序用,一个用法就是自己定义一个类Log,它提供了自己的一些方法,而每个方法具体的实现又是和log4cxx有关)
可能会有疑问,为什么将/home/mac/log4cxx这个目录下创建Log.h Log.cpp这两个文件,而不是在src目录下。这是因为Log.h Log.cpp将不会直接提供给用户,严格地说是Log.cpp这个文件不会提供给用户,Log.h稍后会被放入到include目录下。
至此,创建动态库libLog.so的准备工作已经做好了,接下来就是gcc命令的执行了
g++ -fPIC -shared Log.h Log.cpp -o libLog.so \ -I/home/mac/log4cxx/log4cxx/include \log4cxx相关库的头文件路径,里面其实就是各个函数,变量的声明-L/home/mac/log4cxx/log4cxx/lib \Log4cxx相关库的动态库路径,里面其实就是各个函数,变量的定义-llog4cxx 具体的动态库执行完后,会在当前目录/home/mac/log4cxx下生成libLog.so文件
把它移动到lib目录下,也要把/home/mac/log4cxx/下apr apr-util log4cxx里面lib下和so相关的文件全部复制到/home/mac/log4cxx/lib下(这一步很关键)
再把Log.h文件移动到include目录下,同时也要把/home/mac/log4cxx/log4cxx/include/log4cxx这个目录(包括这个目录名)全部复制到/home/mac/log4cxx/include目录下(这一步很关键)
这时候,进入src目录,新建文件main.cpp,在里面写入你欲调用动态库libLog.so的内容,记得要包含Log.h文件,既需要
#include “Log.h”这一句
好了,让我们生成一个加载动态库libLog.so的程序吧
g++ main.cpp -o ../bin/test \ -I/home/mac/log4cxx/include \-L/home/mac/log4cxx/lib \-lLog.so执行完后会在bin目录下生成test可执行程序
如果./test后提示找不到动态库,那么就是/home/mac/log4cxx/lib这个目录不在系统动态库查找路径下,具体解决方法很多,在这就不写了,搜索一下一大堆。
可能会有人疑问,动态库的加载不是用到函数dlopen吗?其实我一开始就是按照在程序中使用dlopen这个函数的,不过领导要我用这种方法,我也算开了眼界了。所以本片文章的题目是linux下把log4cxx封装成so动态库文件(一),有一就有二,下一篇我就谢谢如何用函数dlopen调用动态库
谢谢观赏
- linux下把log4cxx封装成so动态库文件(一)
- Linux下的动态库so文件
- linux下把.so文件反汇编
- Linux动态库.a与动态库.so的生成与区别、以及.so库文件的封装与使用
- linux下调用动态链接库so文件
- linux下生成动态链接库so文件
- linux下生成动态链接库so文件
- Linux下的动态链接库.so文件的使用
- Linux 下使用gcc生成so(动态链接库)文件
- Linux下的动态链接库.so文件的使用
- linux下动态库.so文件用法总结
- Linux下的动态链接库.so文件的使用
- Linux下的动态链接库.so文件的使用
- Linux下gcc编译生成动态链接库*.so文件
- linux下动态库so文件的一些认识
- linux下动态库so文件的一些认识
- linux下动态库so文件的一些认识
- linux下动态库so文件的一些认识
- Sort the Array+codeforces+水题
- jQuery_review之通过$.get()和$.post()方法来实现异步加载
- C++正则表达式
- 我的初中
- 二叉搜索树转化为双向链表
- linux下把log4cxx封装成so动态库文件(一)
- spring+mybatis+springMvc+maven简单整合
- 建立时间和保持时间不满足如何解决
- 记录一次帮策划写的基于VBA的数据转化工具
- HDUJ 1253 胜利大逃亡 搜索
- swift开发环境搭建
- Lisa和Janet告诉你:敏捷团队的人员分布
- FZU 1901+kmp的next数组的应用
- poj 1417 True Liars(并查集+DP)