log4cxx的编译

对于各种lib的编译, 其实都比较简单, 但往往其中有些"机关", 如果要去看原始文档, 一步一步来, 也可以, 但这样浪费时间, 所以记下, 每次需要重新编译这些库时, 在这里翻一下就知道了.

 

log4cxx的编译参考了:http://blog.sina.com.cn/s/blog_a459dcf501013tbn.html

略微有点不一样:

 

1. 下载 log4cxx 以及 apr 和 apr-util 源码:

    这几个源码都属于apache.org, baidu, 进入, 下载即可;

 

2. 将 3 个压缩包解压到同一个目录.

    arp-1.x.xx 更名为arp, apr-util-1.x.xx更名为arp-util, 因为在log4cxx的工程里面的应用, 目录名称被设置为apr和apr-util. 当然也可以改工程, 但更麻烦;

 

3、在命令行下运行log4cxx\configure.bat, 可以打开该批处理来看, 该批处理就是将

log4cxx.hw copy并重命名为log4cxx.h

log4cxx_private.hw copy并重命名为log4cxx_private.h

 

4. 然后运行configure-aprutil.bat, 这个批处理的作用是配置arp和apr-util, 但windows下没有sed这个命令:

sed -i -e "s/#define APU_HAVE_APR_ICONV\b.*/#define APU_HAVE_APR_ICONV 0/" ..\apr-util\include\apu.hw

sed -i -e "s/#define APR_HAS_LDAP\b.*/#define APR_HAS_LDAP 0/" ..\apr-util\include\apr_ldap.hw

手动将apu.hw和apr_ldap.hw中的宏APU_HAVE_APR_ICONV, APR_HAS_LDAP设置为0即可;

 

5. 使用VS2010打开 apache-log4cxx-0.10.0\projects 下的 log4cxx.dsw, log4cxx.dsw包含了4个工程, apr, apr-util, log4cxx, xml(xml为\apr-util\xml\expat\lib\xml.dsp)全部转换为2010工程. 如果log4cxx没有设为启动项, 将其设为启动项. 工程已经设置好了project的dependency, 直接按F7编译.

 

编译错误更改:

1) 编译会出现c2252错误, 是由于LOG4CXX_LIST_DEF宏定义引起, 到该定义, 改为:

#define LOG4CXX_LIST_DEF(N, T) typedef std::vector<T> N

2) 还会发现一个insert_iterator不是std成员的错误, 是因为没有包含iterator头, 在文件中包含即可

#include <iterator>

 

连接错误更改:

log4cxx引用了其他几个工程生成的静态lib, 在发现很多外部符号无法解析时, 在工程中设置地其他3个工程的引用即可;

工程->属性->通用属性->框架和应用, 添加新引用, 将3个工程依次添加即可;

然后再编译, OK.

转载于:https://www.cnblogs.com/crunchyou/archive/2013/01/21/2869690.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值