log4cpp 编译安装

今天折腾了两个小时走了不少弯路终于把log4cpp重新安装完毕了。分享一下

平台ubuntu 15.04  内核信息( Linux version 3.19.0-15-generic (buildd@tipua) (gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13) ))

下面直接开始正确安装步骤

操作均在root用户下进行:


1、下载压缩源文件:http://sourceforge.net/projects/log4cpp/

2、拷贝到 /usr/local   目录下   tar xzvf +文件名   解压缩

3、./configure

4、make

5、make check 

6、make install 

然后就搞定了 就这么简单,哈哈。

网上说的要修改

log4cpp/src中的两个cpp文件:BasicLayout.cpp和PatternLayout.cpp。我试过了,但是总是会出现两个错误

查找了半天原因,BasicLayout.cpp元文件夹其实已经有#include<memory>这个头文件了,所以应该是作者早就修复了log4cpp-0.3.5版本的bug。
所以就不用按照很多人所说的去修改两个源文件了,
下面是前人的修改内容:
3、如果现在make的话,会有两个错误,这个是源文件的bug【bug 217755】。要修make改log4cpp-1.0\src中的两个cpp文件:BasicLayout.cpp和PatternLayout.cpp。
BasicLayout.cpp(Line 18):增加一句代码:#include <memory>
PatternLayout.cpp(LIne 373):修改minWidth类型:abs((float)minWidth) 
经验证,这些经验都已经失效了。白白折腾了这么长的时间。

但是总算安装好了,开始愉快的日志之旅喽。嘿嘿


### 编译 log4cpp 最新版本的方法 log4cpp 是一个开源的 C++ 日志库,其设计灵感来源于 Java 的 log4j。它支持多种日志输出方式、日志级别设置以及灵活的配置功能[^4]。要编译 log4cpp 的最新版本,通常需要从其 GitHub 仓库获取源代码,并使用 CMake 进行构建。以下是详细的编译步骤: #### 1. 获取 log4cpp 源代码 首先,从 GitHub 上克隆 log4cpp 的最新源代码。可以通过以下命令获取: ```bash git clone https://github.com/log4cpp/log4cpp.git ``` 这将把最新的 log4cpp 源代码下载到本地目录中[^1]。 #### 2. 创建构建目录 进入源代码目录,并创建一个用于构建的目录: ```bash cd log4cpp mkdir build cd build ``` #### 3. 使用 CMake 配置项目 在构建目录中,使用 CMake 配置项目。CMake 会自动检测系统环境,并生成相应的构建文件: ```bash cmake .. ``` 如果需要指定特定的编译器或构建选项,可以传递额外的参数给 CMake。例如,指定使用 GCC 编译器并启用静态库构建: ```bash cmake -DCMAKE_CXX_COMPILER=g++ -DBUILD_SHARED_LIBS=OFF .. ``` #### 4. 编译安装 配置完成后,执行以下命令进行编译: ```bash make ``` 编译完成后,可以使用以下命令将库文件和头文件安装到系统目录中(需要管理员权限): ```bash sudo make install ``` 默认情况下,log4cpp 会被安装到 `/usr/local` 目录下,其中头文件位于 `/usr/local/include/log4cpp`,库文件位于 `/usr/local/lib`[^2]。 #### 5. 验证安装 为了验证 log4cpp 是否成功安装,可以运行其自带的测试用例或编写一个简单的测试程序。例如,创建一个名为 `test_log4cpp.cpp` 的测试文件: ```cpp #include <log4cpp/Category.hh> #include <log4cpp/BasicLayout.hh> #include <log4cpp/FileAppender.hh> #include <log4cpp/Priority.hh> int main(int argc, char* argv[]) { // 创建一个文件 Appender log4cpp::Appender* appender = new log4cpp::FileAppender("fileAppender", "test.log"); appender->setLayout(new log4cpp::BasicLayout()); // 获取根 Category 并设置 Appender 和优先级 log4cpp::Category& root = log4cpp::Category::getRoot(); root.addAppender(appender); root.setPriority(log4cpp::Priority::DEBUG); // 记录日志消息 root.info("This is an info message"); root.debug("This is a debug message"); root.error("This is an error message"); // 清理资源 log4cpp::Category::shutdown(); return 0; } ``` 然后使用 g++ 编译并运行该程序: ```bash g++ test_log4cpp.cpp -o test_log4cpp -llog4cpp ./test_log4cpp ``` 运行后,应该会在当前目录下生成一个名为 `test.log` 的日志文件,其中包含记录的日志信息[^5]。 #### 6. 使用 CMake 配置文件 如果你希望在其他项目中使用 log4cpp,可以创建一个 `log4cppConfig.cmake` 文件,以便 CMake 能够找到 log4cpp 的头文件和库文件。以下是一个简单的 `log4cppConfig.cmake` 示例: ```cmake find_path(log4cpp_INCLUDE_DIR NAMES log4cpp PATHS "${CMAKE_CURRENT_LIST_DIR}/include") find_library(log4cpp_LIBRARY NAMES log4cpp PATHS "${CMAKE_CURRENT_LIST_DIR}/lib") if (log4cpp_INCLUDE_DIR AND log4cpp_LIBRARY) set(LOG4CPP_FOUND TRUE) set(LOG4CPP_LIBRARIES ${log4cpp_LIBRARY}) set(LOG4CPP_INCLUDE_DIRS ${log4cpp_INCLUDE_DIR}) else () set(LOG4CPP_FOUND FALSE) message(WARNING "LOG4CPP not found") endif () if (LOG4CPP_FOUND) if (NOT LOG4CPP_FIND_QUIETLY) message(STATUS "Found LOG4CPP: ${LOG4CPP_LIBRARIES}") endif () else () if (LOG4CPP_FIND_REQUIRED) message(STATUS "Looked for LOG4CPP libraries named ${LOG4CPPS_NAMES}.") message(FATAL_ERROR "Could NOT find LOG4CPP library") endif () endif () ``` 将该文件放置在项目的根目录下,并确保头文件和库文件的路径正确。这样,其他项目就可以通过 `find_package(log4cpp)` 来引入 log4cpp 库[^3]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值