zlog 简易手册

zlog 简易手册

源码下载

  1. 开发版本

    如果以研究学习为目的,或者希望尝试最新特性,又或者希望参与到 zlog 的开发中,可以直接从 Github 主页上拉取最新源码,拉取命令:

    git clone https://github.com/HardySimpson/zlog.git
    

    技巧:在 github 页面点击右上角的 Code 按钮获取 git clone 链接。

  2. 发行版本(建议)

    如果以商用量产为目的,一般选择正式的发行版本。在 Github 主页下载最新的 Release 版本,如 Release 1.2.16 版本,下载后解压缩:

    tar -xvf 1.2.16.tar.gz
    

交叉编译

zlog 使用 makefile 进行编译,进行交叉编译时需要指定 PATHCCAR 环境变量。由于原始的 makefile 直接写死了 ar,所以在进行交叉编译前需要改造一下 makefile 文件,以达到正确调用交叉编译器的 ar 程序。

在 makefile 第 47 行,增加 AR 环境变量的定义:

AR?=ar
STLIB_MAKE_CMD=$(AR) rcs $(STLIBNAME)

执行编译:

export PATH=$PATH:/toolchains/aarch64--glibc--stable-2022.03-1/bin
export CC=aarch64-linux-gcc
export AR=aarch64-linux-ar
export DEBUG=
export PREFIX=$(pwd)/output
make
make install

说明:

  • 1 行将交叉编译器的执行路径加入 PATH 环境变量
  • 2 行配置 CC 变量指定交叉编译器的名称
  • 3 行配置 AR 变量指定交叉编译器的静态库打包工具
  • 4 行配置 DEBUG 变量为空,即编译时不带 -g 选项
  • 5 行配置 PREFIX 变量指定编译产物所存放的位置
  • 6 行执行 make 命令进行编译
  • 7 行执行 make install 命令将编译产物放置到 PREFIX 指定的路径

QNX 7.1 交叉编译

提示:文章结尾有 github 路径。

源码修改

  1. 修改 fmacros.h 文件,在文件第 6 行增加 _QNX_ 宏定义判断:

    #if defined(__linux__) || defined(__OpenBSD__) || defined(_AIX) || defined(_QNX_)
    
  2. 修改 event.h 文件,修改第 70 行的宏定义判断:

    #if defined __linux__ || __APPLE__ || _QNX_
    
  3. 修改 event.c 文件,在头文件引用部分根据宏定义进行判断:

    #ifdef _QNX_
    #include <sys/process.h>
    #else
    #include <sys/syscall.h>
    #endif
    

    97 行增加判断,因为在 QNX 系统中是使用 gettid() 函数获取线程的唯一 ID 值:

    #ifdef __linux__
        a_event->ktid = syscall(SYS_gettid);
    #elif _QNX_
        a_event->ktid = gettid();
    #elif __APPLE__
        uint64_t tid64;
        pthread_threadid_np(NULL, &tid64);
        a_event->tid = (pthread_t)tid64;
    #endif
    

    107 行增加 _QNX 宏定义判断:

    #if defined __linux__ || __APPLE__ || _QNX_
    

Makefile 修改

zlog 的 makefile 文件主要是针对 gcc 编译器而设计的,当使用 qnx 的编译 qcc 进行编译时,有些库以及宏定义的使用需要进行调整。

  1. 移除在 37 行与 38 行的 -pthread 定义,默认情况下,QNX 的编译器 qcc 自带了 pthread 库,不需要额外链接。

编译流程

  1. 假如 QNX 7.1 SDP 的路径为 /work/sdk/qnx710,使用 source 命令让 qnx 环境变量生效:

    source /work/sdk/qnx710/qnxsdp-env.sh
    
  2. qcc 添加到 $PATH 环境变量:

    export PATH=$PATH:$QNX_HOST/usr/bin
    
  3. 配置 CC 环境变量的值,默认为 gcc,需要修改成 qcc:

    export CC=qcc
    
  4. 配置 CFLAGSLDFLAGS 变量,增加 qnx 的特定配置:

    export CFLAGS="-Vgcc/8.3.0,gcc_ntoaarch64le -D_QNX_SOURCE -D_QNX_"
    export LDFLAGS=-Vgcc/8.3.0,gcc_ntoaarch64le
    
  5. 编译非 Debug 版本:

    export DEBUG=
    
  6. 配置 PREFIX 变量指定编译产物所存放的位置:

    export PREFIX=$(pwd)/output
    

所有配置可汇总成以下脚本 qnx_build.sh

#!/bin/bash

source /work/sdk/qnx710/qnxsdp-env.sh
export PATH=$PATH:$QNX_HOST/usr/bin
export CC=qcc
export CFLAGS="-Vgcc/8.3.0,gcc_ntoaarch64le -D_QNX_SOURCE -D_QNX_"
export LDFLAGS=-Vgcc/8.3.0,gcc_ntoaarch64le
export DEBUG=
export PREFIX=$(pwd)/output
make
make install

以上所有的修改我从 Github 上 fork 了一份到我的个人仓库,并已将修改后的源码进行开源,可以拉取 qnx_1.2.16 分支进行查阅或编译:

git clone -b qnx_1.2.16 https://github.com/i-black-angel/zlog.git

网址: qnx_1.2.16

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值