zlog日志库(笔记) —— 编译和安装

编译环境

我的编译环境(WSL1 + VS Code 1.71.0):
OS: Linux 4.4.0
GCC: gcc 5.4.0

编译和安装zlog

下载或fork + clone https://github.com/HardySimpson/zlog

比如,这里是下载安装包zlog-latest-stable.tar.gz。Linux终端输入以下命令进行编译、安装:

$ tar -zxvf zlog-latest-stable.tar.gz
$ cd zlog-latest-stable
$ make
$ sudo make install
# or PREFIX指定安装目录
$ sudo make PREFIX=/usr/local/ install

PREFIX指明了安装路径。如果不用PREFIX指定目录,Linux平台默认安装到系统路径/usr/local;如果用PREFIX指定非默认路径,安装完后,为了让你的程序能找到zlog动态库,需要修改ld.so.conf文件

$ sudo vi /etc/ld.so.conf
/usr/local/lib
# 创建动态装入程序(ld.so)所需的链接和缓存文件
$ sudo ldconfig

其他编译

详见makefile

$ make 32bit # 64bit机器上编译32bit版本, 需要libc6-dev-i386
$ make noopt #  无gcc优化
# make doc # lyx, hevea
$ make test # 编译生成测试程序

注:
lyx是文档处理器,官网https://www.lyx.org/

应用程序如何使用zlog?

通过一个简单的"hello world"示例,看应用程序(APP)如何使用zlog。

1)添加头文件
在APP源码(如app.c)中,添加zlog接口头文件

#include "zlog.h"

2)链接zlog
由于zlog库使用了pthread,因此编译命令需要链接pthread

$ cc -c -o app.o app.c -I/usr/local/include # -I指定头文件搜索目录, 也就是zlog.h所在目录
$ cc -o app app.o -L/usr/local/lib -lzlog -lpthread # -L指定库文件目录, 也就是libzlog.so所在目录

这里app.c是指APP的源码文件,名称可以自定义。

3)新建一个C文件(test_hello.c),包含以下使用zlog库的内容
实际代码存放于$(top_builddir)/test/test_hello.c, test_hello.conf

#include <stdio.h>
#include "zlog.h"

int main(int argc, char *argv[])
{
    int rc; /* return code */
    zlog_category_t *c;
    rc = zlog_init("test_hello.conf");
    if (rc) { // error
        printf("init fialed\n");
        return -1;
    }

    c = zlog_get_category("my_cat");
    if (!c) {
        printf("get cat fail\n");
        zlog_fini();
        return -2;
    }
    
    zlog_info(c, "hello, zlog");
    zlog_fini();
    return 0;
}

4)写一个配置文件(test_hello.conf),跟test_hello.c同目录
注意:内容跟源文件稍有区别。

[formats]
simple = "%m%n"
[ruls]
my_cat.DEBUG    >stdout; simple

5)编译、运行
在项目中编译

$ make test
$ cd test
$ ./test_hello
hello, zlog

如果单独编译文件,执行下面命令

$ cc -c -o test_hello.o test_hello.c -I/usr/local/include
$ cc -o test_hello test_hello.o -L/usr/local/lib -lzlog
$ ./test_hello

至此,说明zlib库已经成功安装、使用。

posted @ 2022-09-11 00:28  明明1109  阅读(701)  评论(0编辑  收藏  举报