liusir

liusir

1个粉丝

28

问答

0

专栏

2

资料

liusir  发布于  2017-02-24 14:52:47
采纳率 0%
28个问答
4887

移植glog库到海思3519

 

[i=s] 本帖最后由 liusir 于 2017-3-8 15:57 编辑 [/i]

[size=5][b]1.移植环境:[/b][/size]

[b][size=5]2.移植glog:[/size][/b] [b]1)解压 [/b]

shunzhi@ubuntu:~/software$ tar -xvzf glog-0.3.3.tar.gz

[b]2)新建一个安装目录[/b]

shunzhi@ubuntu:~/software$ cd glog-0.3.3/  
shunzhi@ubuntu:~/software/glog-0.3.3$ mkdir _install  

[b]3)配置编译环境变量 [/b]

shunzhi@ubuntu:~/software/glog-0.3.3$ ./configure --host=arm-hisiv500-linux --prefix=/home/shunzhi/software/glog-0.3.3/_install/  

[b]4)编译glog库 [/b]

shunzhi@ubuntu:~/software/glog-0.3.3$ make

[b]5)安装glog库 [/b]

shunzhi@ubuntu:~/software/glog-0.3.3$ make install
shunzhi@ubuntu:~/software/glog-0.3.3$ cd _install/
shunzhi@ubuntu:~/software/glog-0.3.3/_install$ ls
include  lib  share
然后将lib目录中的libglog.so.0文件拷贝到3519开发板的/usr/lib目录下。

[b][size=5]3.测试:[/size][/b]

[b]1)测试程序[/b] glog_hisi.c

[code] #include

include

#include <sys/stat.h>
#include <sys/types.h>
#include <glog/logging.h>
#include <glog/log_severity.h>

int main(void)
{
    char defpath[100] = "./log";
    //创建log文件夹
    mkdir("./log",0777);
    //log初始化
    google::InitGoogleLogging("New");

    FLAGS_colorlogtostderr = true;//设置输出到屏幕的日志显示相应颜色
    //FLAGS_servitysinglelog = true;// 用来按照等级区分log文件
    FLAGS_logbufsecs = 0;//缓冲日志输出,默认为30秒,此处改为立即输出
    FLAGS_max_log_size = 1; //最大日志大小为 100MB
    FLAGS_stop_logging_if_full_disk = true;//当磁盘被写满时,停止日志输出
    google::SetStderrLogging(google::GLOG_INFO); //设置级别 高于 google::INFO 的日志同时输出到屏幕

    //日志名称和输出地址
    char Info[50] = {0};
    char Warn[50] = {0};
    char Error[50] = {0};
    char Fatal[50] = {0};

    strcpy(Info, defpath);
    strcpy(Warn, defpath);
    strcpy(Error, defpath);
    strcpy(Fatal, defpath);

    strcat(Info, "/Info_");
    strcat(Warn, "/Warning_");
    strcat(Error, "/Error_");
    strcat(Fatal, "/Fatal_");
    google::SetLogDestination(google::GLOG_INFO,Info); 
    google::SetLogDestination(google::GLOG_WARNING,Warn); 
    google::SetLogDestination(google::GLOG_ERROR,Error); 
    google::SetLogDestination(google::GLOG_FATAL,Fatal); 
    LOG(INFO) <<"------------------------------"<<std::endl;
    LOG(INFO) <<"---------Creat Log!!!---------\n ";
    LOG(INFO) <<"------------------------------"<<std::endl;

    return 1;
}

[/code]

Makefile

[code] CC = arm-hisiv500-linux-g++

CC = g++

DEMOTAR = glog_hisi
DEMOOBJ = glog_hisi.o

CFLAGS += -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -mno-unaligned-access -fno-aggressive-loop-optimizations
CFLAGS += -g -Wall -I/home/shunzhi/software/glog-0.3.3/_install/include
LDFLAGS += -L/home/shunzhi/software/glog-0.3.3/_install/lib -Wl,-Bdynamic -lglog -lpthread -lrt

%.o: %.c
    @echo "[Compiling] $< ..."
    @$(CC) $(CFLAGS) -c $<

all: $(DEMOTAR)

$(DEMOTAR):$(DEMOOBJ)
    @$(CC) -o $@ $^ $(LDFLAGS)

.PHONY : clean
clean:
    rm -rf $(DEMOOBJ) $(DEMOTAR)  [/code]

[b]2)编译测试程序[/b]

shunzhi@ubuntu:~/workspace/glog$ ls
glog_hisi.c  Makefile
shunzhi@ubuntu:~/workspace/glog$ make
[Compiling] glog_hisi.c ...
shunzhi@ubuntu:~/workspace/glog$ ls
glog_hisi  glog_hisi.c  glog_hisi.o  Makefile

[b]3)测试结果[/b]

~/glog # ls
glog_hisi
~/glog # ./glog_hisi 
I0101 15:44:54.473941   273 glog_hisi.c:46] ------------------------------
I0101 15:44:54.475924   273 glog_hisi.c:47] ---------Creat Log!!!---------

I0101 15:44:54.476441   273 glog_hisi.c:48] ------------------------------
~/glog # ls
glog_hisi  log

注:log目录下的文件就是生成的日志文件

[size=5][b]4.移植库可能遇到的问题[/b][/size]

[b]1)执行congfigure配置通过,而且执行make编译也正常,在执行sudo make install是出现了下面的错误:[/b]

[b]错误log[/b]

make[1]: Entering directory '/home/shunzhi/software/glog-0.3.3'
test -z "/home/shunzhi/software/glog-0.3.3/lib" || /bin/mkdir -p "/home/shunzhi/software/glog-0.3.3/lib"
 /bin/sh ./libtool   --mode=install /usr/bin/install -c   libglog.la '/home/shunzhi/software/glog-0.3.3/lib'
libtool: install: /usr/bin/install -c .libs/libglog.so.0.0.0 /home/shunzhi/software/glog-0.3.3/lib/libglog.so.0.0.0
libtool: install: (cd /home/shunzhi/software/glog-0.3.3/lib && { ln -s -f libglog.so.0.0.0 libglog.so.0 || { rm -f libglog.so.0 && ln -s libglog.so.0.0.0 libglog.so.0; }; })
libtool: install: (cd /home/shunzhi/software/glog-0.3.3/lib && { ln -s -f libglog.so.0.0.0 libglog.so || { rm -f libglog.so && ln -s libglog.so.0.0.0 libglog.so; }; })
libtool: install: /usr/bin/install -c .libs/libglog.lai /home/shunzhi/software/glog-0.3.3/lib/libglog.la
libtool: install: /usr/bin/install -c .libs/libglog.a /home/shunzhi/software/glog-0.3.3/lib/libglog.a
libtool: install: chmod 644 /home/shunzhi/software/glog-0.3.3/lib/libglog.a
libtool: install: arm-hisiv500-linux-ranlib /home/shunzhi/software/glog-0.3.3/lib/libglog.a
./libtool: line 1099: arm-hisiv500-linux-ranlib: command not found
Makefile:697: recipe for target 'install-libLTLIBRARIES' failed
make[1]: *** [install-libLTLIBRARIES] Error 127
make[1]: Leaving directory '/home/shunzhi/software/glog-0.3.3'
Makefile:1428: recipe for target 'install-am' failed
make: *** [install-am] Error 2

[b]错误原因: [/b] 交叉工具链安装的问题,交叉工具链root用户下找不到。

[b]解决方案: [/b] 按照上述我的配置步骤,新建一个安装目录(shunzhi@ubuntu:~/software/glog-0.3.3$ mkdir _install),然后配置选项中指明安装目录(--prefix=/home/shunzhi/software/glog-0.3.3/_install/),执行make install即可。

[postbg]bg4.png[/postbg]

易百纳技术社区文件: glog-0.3.3.tar.gz
下载
我来回答
回答6个
时间排序
认可量排序

ngswfx

2个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-02-24 18:42:16
认可0
本帖最后由 ngswfx 于 2017-2-24 19:14 编辑

主要支持功能: 1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为; 2, 严重性分级,根据日志严重性分级记录日志; 3, 可有条件地记录日志信息; 4, 条件中止程序。丰富的条件判定宏,可预设程序终止条件; 5, 异常信号处理。程序异常情况,可自定义异常处理过程; 6, 支持debug功能。可只用于debug模式; 7, 自定义日志信息; 8, 线程安全日志记录方式; 9, 系统级日志记录; 10, google perror风格日志信息; 11, 精简日志字符串信息。


好像还挺方便,其实我感觉最需要的功能就是写日志不能占用太多资源,另外方便调用,策略可控,尤其是设定最大值,例如100K,超过就循环删除,而且支持压缩才行,程序运行中,写入到内存,程序退出更新写入,或者定时更新30秒后,压缩保存,实际写入文件。

要是有硬盘,估计还好说,要是SPI flash,我都不敢写,怕程序异常,一秒钟写个几百条,弄死系统或者flash了。目前我是折腾的tee,把printf日志搞到内存空间 /dev目录里面,保存为一个文件xxx.log,只要硬件重启,就自动消失,不写入flash,然后定时检测日志文件当前大小,如果超过1M,就删除,避免内存耗尽;支持PC获取日志,将/dev/xxx.log网络拷贝发送到PC端,察看当前日志。

相关的库libglog.so.0占用多少空间?要是100K左右,倒是可以试试。

你把这个版本下载下来,再传到这个网上,很多同学懒得折腾google:L ,翻不出去呀。

//////////////////其实还有个办法折腾日志,刚想到,就是通过广播直接把日志发送出去,然后网络数据包,开始弄32个字节,标识一个结构体,里面有日志级别,长度,设备IP地址等信息。这样就可以在PC机上,监控IPC或者NVR的工作状态了,调试程序也方便不少。有空我写一个。

laocheng

1个粉丝

14

问答

0

专栏

0

资料

laocheng 2017-02-24 19:31:49
认可0
我想问问,这个库是仅能在C++里面使用吗?

liusir

1个粉丝

28

问答

0

专栏

2

资料

liusir 2017-02-27 09:31:30
认可0
本帖最后由 liusir 于 2017-2-27 09:35 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=45614&ptid=14303]ngswfx 发表于 2017-2-24 18:42[/url]
主要支持功能: 1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为; 2, 严重性分级,根 ...[/quote]

谢谢你,认真回复;源码已上传,库确实比较大(678.4K),我现在是把原来pc的一个项目移植到3519(存储受限,目前来说比较困难),日志文件打算放到/dev下定时上传,删除。等待大神库的后续更新:) 。

liusir

1个粉丝

28

问答

0

专栏

2

资料

liusir 2017-02-27 09:41:31
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45618&ptid=14303]laocheng 发表于 2017-2-24 19:31[/url]
我想问问,这个库是仅能在C++里面使用吗?[/quote]

我只在C++里用过。

liusir

1个粉丝

28

问答

0

专栏

2

资料

liusir 2017-02-28 09:12:50
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=45713&ptid=14303]x700_3519 发表于 2017-2-27 16:57[/url]
shunzhi[/quote]

陈工,:lol

x700_3519

0个粉丝

4

问答

0

专栏

0

资料

x700_3519 2017-02-27 16:57:04
认可0
shunzhi :)
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区