1. 程式人生 > >日誌工具zlog交叉編譯至imx下位機執行

日誌工具zlog交叉編譯至imx下位機執行

2018-11-22  白微

zlog的官網http://hardysimpson.github.io/zlog/

zlgo github原始碼下載網https://github.com/HardySimpson/zlog/releases

有網友提供瞭如下版本,方便其他平臺上安裝編譯,非常感謝!

auto tools版本: https://github.com/bmanojlovic/zlog

我下載的auto tools版本

 

PC端(Ubuntu)

首先檢視下是否已經具有交叉編譯環境

echo $PATH

我這裡是顯示帶有"/opt/poky/../arm-poky-linux-gnueabi"

然後可以去編譯原始碼

cd 到原始碼目錄

unzip zlog-master.zip
cd zlog-master/
mkdir install
chmod +x autogen.sh
./autogen.sh
./configure --host=arm-poky-linux-gnueabi --prefix=/.../zlog/zlog-master/install/
make install

此時已經編譯成功至當前目錄下的install目錄裡

進去zlog_install目錄的lib裡,檢視是否已經是你的下位機適用庫

file libzlog.so.1.1.0
顯示:libzlog.so.1.1.0: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=59cdf007aadd8a298b9f8a7f9df54b7f3919174a, not stripped

表示已經是下位機可執行的zlog庫;該工具已經編譯成功,將install裡面的東西打包成.gz檔案 tar czvf zlog_master.tar.gz install/,scp 給下位機直接解壓到根目錄下

 

接下來開始編寫測試程式:

mkdir zlog_test

cd zlog_test

touch test_hello.c

vi test_hello.c

 1 #include <stdio.h> 
 2 
 3 #include "zlog.h"
 4 
 5  
 6 
 7 int main(int argc, char** argv)
8 9 { 10 11 int rc; 12 13 zlog_category_t *c; 14 15 rc = zlog_init("test_hello.conf"); 16 17 if (rc) { 18 19 printf("init failed\n"); 20 21 return -1; 22 23 } 24 25 c = zlog_get_category("my_cat"); 26 27 if (!c) { 28 29 printf("get cat fail\n"); 30 31 zlog_fini(); 32 33 return -2; 34 35 } 36 37 zlog_info(c, "hello, zlog"); 38 39 zlog_fini(); 40 41 return 0; 42 43 }

 

在同目錄下新建test_hello.conf,編輯輸入

[formats]
simple = "%m%n"

[rules]
my_cat.DEBUG >stdout; simple

在同目錄下新建Makefile

all:clean test test_hello.o test_hello

test:
    $(CC) -o test test.c

test_hello.o:
    $(CC) -c -o test_hello.o test_hello.c -I/../zlog-master/install/include

test_hello:
    $(CC) -o test_hello test_hello.o -L/../zlog-master/install/lib -lzlog -lpthread
clean:
    rm -f test test_hello.o test_hello

執行make,生成 test_hello

將test_hello和test_hello.conf拷貝至下位機,直接執行./test_hello,列印成功

# ./test_hello
hello, zlog