windows用VS2019下编译log4cxx日志库

article/2025/9/19 19:39:24

一、下载相关库文件

获取log4cxx源码包:http://logging.apache.org/log4cxx/index.html
获取依赖库apr和apr-util源码包:http://archive.apache.org/dist/apr/apr-1.2.11-win32-src.zip
http://archive.apache.org/dist/apr/apr-util-1.2.10-win32-src.zip

在这里插入图片描述

编译apr-util会提示缺少expat的库文件,expat的下载地址:https://github.com/libexpat/libexpat/releases
发现里面有直接的安装包,可以直接安装,安装把路径添加到环境变量中。

先编译apr和apr-util,然后再log4cxx中把依赖库的路径填进去。
编译apr-util需要依赖OpenSSL,通过下面的路径直接下载编译好的openssl。
https://slproweb.com/products/Win32OpenSSL.html

二、CMake编译试错

1.编译apr库

编译apr的库,很顺利,直接cmak-gui打开编译就行了。这次编译生成的文件夹统一在库目录下build_win里面。编译win32程序。
在这里插入图片描述
cmake成功点open Project按钮打开Vs工程,编译生成需要的依赖库
在这里插入图片描述

2、编译apr-util库

这个util库依赖太多了,有apr库和什么expat库,还有oenssl。还好expat库和OpenSSL可以安装直接编译好的文件。ExpatOpenSSL的安装路径如下图,并且把OpenSSL的路径添加进了环境变量里面。
在这里插入图片描述
在这里插入图片描述
然后cmake-gui添加apr-util的库点击configure会有如下提示:
在这里插入图片描述
勾选Search选项右边的GroupedAdvanced,并修改依赖库的路径如下:
在这里插入图片描述
继续点击发现还是会报如下的错误:

CMake Error at CMakeLists.txt:36 (MESSAGE):APR include directory E:\log4cxx\apr-1.7.0\include is not correct.

打开CMakeList.txt文件,找到第36行,发现makefile代码如下:
在这里插入图片描述

如图所示只要include目录下没有apr.h就报错。后面通过everything搜索,发现在apr的生成目录中有apr.h的文件,然后把他复制到apr-1.7.0的include目录下。
在这里插入图片描述
复制过去后点configure按钮成功,然后继续点GenerateOpen Project,打开vs工程文件并编译生成apr-util的库文件。

3.最后一步,编译log4cxx

终于到了最后一步了,继续用cmak-gui加载log4cxx的makefile文件。点击Configure按钮依然报错,这里要多点几次configure,我是点了三次,第一次提示缺少apr的库,第二次提示缺少apr-util,第三次提示缺少expat。可能每次makefile执行通过才给下个提示。三次需要修改依赖库如下图所示:
在这里插入图片描述
修改完成后点击Configure还是会报错
在这里插入图片描述
看了一下提示是什么src/Test目录,心想没什么用,就找到src/test/cpp/CMakeLists.txt这个文件把依赖的什么sed_app、zip_app和gzip_app给屏蔽掉了。
在这里插入图片描述
屏蔽掉保存然后Configure->Generate->Open Project。
在这里插入图片描述
编译log4cxx发现由如下报错,提示找不到apu.h的头文件。
在这里插入图片描述
于是将apr-util编译生成目录里面的apu.h文件复制到apr-util-1.6.1\include目录下,编译成功。
在这里插入图片描述
在这里插入图片描述

三、总结

cmake编译关键有两点:

  1. 如果报错可以看Makefile里面到底是哪里出错了,要么屏蔽掉要么修改依赖库的位置。
  2. 如果编译过程中提示缺少库文件,用everything搜下直接复制过去。

参考:

1.windows下安装Openssl的方法
2.Windows下编译apr、apr-util


http://chatgpt.dhexx.cn/article/E8mBpV3q.shtml

相关文章

log4cxx编译

本人进行过win7 64位操作系统和win10家庭版的log4cxx编译,使用的是vs2015,下面是详情。 1.sed下载 sed-4.2.1-bin.zip、sed-4.2.1-dep.zip下载地址:http://gnuwin32.sourceforge.net/packages/sed.htm 下载后,将sed的两个压缩包解…

【RT-Thread Master】at24cxx软件包使用笔记

硬件介绍 RT-Thread版本:V4.1.0软件包名称:at24cxxMCU型号:AT32F407VET7EEPROM型号:AT24C16 使用说明 1、使用menuconfig将软件包添加进入工程,路径如下所示。 2、把IIC总线打开,这里使用软件IIC&#…

linux下编译和安装log4cxx,ubuntu下log4cxx安装使用

需要安装log4cxx,安装的过程中可是充满了坎坷。。。最大的问题是在make log4cxx时,总是报undefined XML什么什么的错误,查了一下也没解决了,然后把apr-utils删了重新装了一下就好了。。 log4cxx现在是apache的一个项目&#xff0c…

linux下编译和安装log4cxx,RedHat如何安装log4cxx日志库

log4cxx日志库是一种动态库,用于记录c的日志,那么RedHat系统下要如何安装log4cxx日志库呢?下面小编就给大家介绍下RedHat安装log4cxx日志库的步骤,感兴趣的朋友不妨来了解下吧。 首先,我得到信息,安装这个库…

AT24Cxx读写全面理解

AT24Cxx - 电可擦可写E2PROM 芯片介绍 基础介绍\引脚介绍 AT24Cxx系列EEPROM是由美国Mcrochip公司出品,1-512K位的支持I2C总线数据传送协议的串行CMOS E2PROM,可用电擦除,可编程自定时写周期(包括自动擦除时间不超过10ms&#…

mongodb-cxx-driver使用

mongocxx driver 是构建在 MongoDB C driver 之上的 1.首先需要安装mongo-c-driver wget https://github.com/mongodb/mongo-c-driver/releases/download/ 1.23.1/mongo-c-driver-1.23.1.tar.gz tar xzf mongo-c-driver-1.23.1.tar.gz cd mongo-c-driver-1.23.1 mkdir cmak…

老胡的周刊(第095期)

老胡的信息周刊[1],记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 🎯 项目 tabby[2] 自托管的 AI 编码助手,…

程序员养生指北

吴小胖第八次推送 阅读时间预计3分钟~ 熬夜篇 互联网人熬夜是不能避免的,原因却各不相同。 不加班的时候,总会对自己说,今天一定早睡,然鹅... 午休篇 熬夜的程序员总想依靠午休补觉,然鹅... 更不幸的是,互联…

老杨说运维 | 中国IT运维市场的现状与趋势

文章内容来源《第一新声》 对擎创科技CEO杨辰(老杨)的专访 前言: 中国目前正面临百年未有之大变局,在这个变局中,不稳定性和不确定性正在增强。疫情持续反复、国际形势变化多端,导致国内多个行业出现发展增速下降、产供销节奏打…

老杨说运维 | 非常重要,事关转型

《荀子》有云:“水能载舟,亦能覆舟。”在公司日常运营过程中,数据指标就像是水,孕育着生命,承载着万物。科学的数据指标能指引公司在正确的道路上不断前进,使平淡无常的业务焕发新生,而不合理的…

学习springcloud的一些心得体会——老卫的天气预报系统

1:建立天气预报springboot系统 首先先建立一个天气预报的springboot系统,具体流程如下: (1)从cityList.xml中获取城市信息, (2)然后根据下面的链接获取各个城市的天气预报信息&am…

学习springboot项目的一些心得-----老卫的博客系统

去年年底接触了springboot框架,这两天复习了一遍,主要是跟着老卫博客系统这个课程学习的。 springboot介绍:总的感觉springboot就是基于spring开发的一套框架,好处就是不用配置复杂的依赖包,xml的一些文件&#xff0c…

thymeleaf和spring boot的集成踩坑总结(练习项目是老卫的博客项目)

bug1: 2019-08-08 16:44:38.102 ERROR 19810 — [nio-8080-exec-8] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-8] Exception processing template “users/list”: Error resolving template “users/list”, template might not exist or might not be …

《跟老卫学 HarmonyOS 开发》:以父之名・码力全开!写段 HarmonyOS 祝父亲节

#父亲节祝福语# 爸爸在我心中就像旗帜 他教会我做人与处事的方向 在父亲节这个特别的日子里 我想对爸爸说长大以后我就要成为您 使用ArkUI开发“父亲节的祝福” 使用ArkUI开发“父亲节的祝福”,效果如下: 使用DevEco Studio整体开发HarmonyOS整体时…

【老卫搞机】090期:键盘?主机?全功能键盘主机!

这是一台我个人DIY的第二代键盘主机(第一代见:【老卫搞机】074期:键盘?主机?键盘主机!_哔哩哔哩_bilibili)。相比与第一代的作品,第二代产品除了USB 3接口、USB 2接口、mini HDMI接口…

【老卫拆书】009期:Vue+Node肩挑全栈!《Node.js+Express+MongoDB+Vue.js全栈开发实战》开箱

今天刚拿到一本新书,叫做《Node.jsExpressMongoDBVue.js全栈开发实战》,做个开箱。 外观 先从外观上讲,这本是全新的未开封的,膜还在。 这本书介绍从技术原理到整合开发实战,以丰富的项目展现全栈开发的一个技巧。 …

【老卫搬砖】034期:HarmonyOS 3.1 Beta 1初体验,我在本地模拟器里面刷短视频

今天啊打开这个DevEco Studio的话,已经提示有3.1Beta1版本的一个更新啊。然后看一下它的一些特性。本文也演示了如何在本地模拟器里面运行HarmonyOS版短视频。 主要特性 新特性包括: Added support for Windows 11 64-bit and macOS 13.x OSs, as well…

【老卫搞机】135期:华为开发者联盟社区2022年牛人之星奖品开箱!

首先祝大家兔年大吉,身体安康,钱兔似锦!今天咱们来开箱一件特殊的奖品,来自华为开发者联盟社区的新年祝福——2022年牛人之星。 华为有钱!惯例用的是顺丰快递,各位看一下这里面是有很多件的 有这两件。第一…

【老卫搞机】136期:华为开发者联盟社区2022年度战码先锋2期开源贡献之星

首先祝大家兔年大吉,身体安康,钱兔似锦!接上次的“2022年牛人之星”( https://developer.huawei.com/consumer/cn/forum/topic/0203109930647268095),今天咱们来开箱另外一件特殊的奖品,来自华为…

老卫带你学---SVM支持向量机

老卫带你学—SVM支持向量机 学习目标: 理解支持向量机的知识结构理解支持向量机的原理与目标理解算法推导的核心过程和意义(关键是损失函数与约束条件的意义)理解核函数的意义与方法 知识结构 hard margin SVM:可以容易的找到…