liusir

liusir

0个粉丝

28

问答

0

专栏

2

资料

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

移植glog库到海思3519

本帖最后由 liusir 于 2017-3-8 15:57 编辑

1.移植环境:
- Ubuntu15.10 + arm-hisiv500-linux-
- glog-0.3.3 下载地址【或者附件】:[url]https://code.google.com/archive/p/google-glog/downloads[/url]  

2.移植glog:
1)解压    

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

2)新建一个安装目录   

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

3)配置编译环境变量  
  
        shunzhi@ubuntu:~/software/glog-0.3.3$ ./configure --host=arm-hisiv500-linux --prefix=/home/shunzhi/software/glog-0.3.3/_install/  

4)编译glog库  

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

5)安装glog库  
  
        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目录下。

3.测试:

1)测试程序
glog_hisi.c

[code]        #include
        #include
        #include
        #include
        #include
        #include
       
        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) <<"------------------------------"<             LOG(INFO) <<"---------Creat Log!!!---------\n ";
            LOG(INFO) <<"------------------------------"<        
            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]

2)编译测试程序  

        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

3)测试结果

        ~/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目录下的文件就是生成的日志文件

4.移植库可能遇到的问题

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

        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


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

解决方案:  
按照上述我的配置步骤,新建一个安装目录(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

0个粉丝

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

0个粉丝

14

问答

0

专栏

0

资料

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

liusir

0个粉丝

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

0个粉丝

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

0个粉丝

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)
举报反馈

举报类型

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

详细说明

易百纳技术社区