linux glog 0.50版本 设置交叉编译器生成静态库
目标:设置glog的交叉编译器,生成静态库libglog.a;
步骤:
(1)下载最新版本的glog源码,最新版本0.050(2021.08.23)
https://github.com/google/glog
(2)源码目录如下表:
(3)修改交叉编译器的文件,在目录toolchains
复制一份gcc-cxx11.cmake,更名为gcc-cxx11-crosscompiling.cmake,修改交叉编译器
(4)在CMakeLists.txt中可以设置编译为静态库还是动态库
将ON修改为OFF,生成静态库libglog.a;
(5)新建_build目录,并执行cmake命令,生成makefile文件,cmake命令的参数详细讲解请参考这里
cmake -H. -B_build -DCMAKE_TOOLCHAIN_FILE="${PWD}/toolchains/gcc-cxx11-crosscompiling.cmake" && cd -
(6)执行make命令,生成静态库;
ubuntu0compile:~/glog-master/_build$ make
Scanning dependencies of target glog
[ 4%] Building CXX object CMakeFiles/glog.dir/src/demangle.cc.o
[ 9%] Building CXX object CMakeFiles/glog.dir/src/logging.cc.o
[ 13%] Building CXX object CMakeFiles/glog.dir/src/raw_logging.cc.o
[ 18%] Building CXX object CMakeFiles/glog.dir/src/symbolize.cc.o
[ 22%] Building CXX object CMakeFiles/glog.dir/src/utilities.cc.o
[ 27%] Building CXX object CMakeFiles/glog.dir/src/vlog_is_on.cc.o
[ 31%] Building CXX object CMakeFiles/glog.dir/src/signalhandler.cc.o
[ 36%] Linking CXX static library libglog.a
[ 36%] Built target glog
Scanning dependencies of target signalhandler_unittest
[ 40%] Building CXX object CMakeFiles/signalhandler_unittest.dir/src/signalhandler_unittest.cc.o
[ 45%] Linking CXX executable signalhandler_unittest
[ 45%] Built target signalhandler_unittest
Scanning dependencies of target stacktrace_unittest
[ 50%] Building CXX object CMakeFiles/stacktrace_unittest.dir/src/stacktrace_unittest.cc.o
[ 54%] Linking CXX executable stacktrace_unittest
[ 54%] Built target stacktrace_unittest
Scanning dependencies of target demangle_unittest
[ 59%] Building CXX object CMakeFiles/demangle_unittest.dir/src/demangle_unittest.cc.o
[ 63%] Linking CXX executable demangle_unittest
[ 63%] Built target demangle_unittest
Scanning dependencies of target symbolize_unittest
[ 68%] Building CXX object CMakeFiles/symbolize_unittest.dir/src/symbolize_unittest.cc.o
[ 72%] Linking CXX executable symbolize_unittest
[ 72%] Built target symbolize_unittest
Scanning dependencies of target logging_unittest
[ 77%] Building CXX object CMakeFiles/logging_unittest.dir/src/logging_unittest.cc.o
[ 81%] Linking CXX executable logging_unittest
[ 81%] Built target logging_unittest
Scanning dependencies of target stl_logging_unittest
[ 86%] Building CXX object CMakeFiles/stl_logging_unittest.dir/src/stl_logging_unittest.cc.o
[ 90%] Linking CXX executable stl_logging_unittest
[ 90%] Built target stl_logging_unittest
Scanning dependencies of target utilities_unittest
[ 95%] Building CXX object CMakeFiles/utilities_unittest.dir/src/utilities_unittest.cc.o
[100%] Linking CXX executable utilities_unittest
[100%] Built target utilities_unittest
(7)静态库功能测试,在_build/glog会生成可用的头文件,但是开源库里的头文件使用的路径需要修改一下,等编译报错时将头文件的路径glog/去掉,不使用绝对路径就可以了,编写测试代码glog.cpp,并编译执行;
/********************************************************
//glog.cpp
********************************************************/
#include <stdio.h>#include "glog/logging.h"int main()
{//初始化参数FLAGS_logtostderr = false; //TRUE:标准输出,FALSE:文件输出FLAGS_alsologtostderr = true; //除了日志文件之外是否需要标准输出FLAGS_colorlogtostderr = false; //标准输出带颜色FLAGS_logbufsecs = 0; //设置可以缓冲日志的最大秒数,0指实时输出FLAGS_max_log_size = 10; //日志文件大小(单位:MB)FLAGS_stop_logging_if_full_disk = true; //磁盘满时是否记录到磁盘google::InitGoogleLogging("mqttserver");google::SetLogDestination(google::GLOG_INFO,"./test");LOG(INFO) << "this is log";LOG(WARNING) << "this is warnning";LOG(ERROR) << "this is error";google::ShutdownGoogleLogging();
}
编译命令:
g++ glog.cpp -o test -L. -I./ -lglog -pthread
ubuntu0compile:~/glog-master/_build$ ./test
I20210823 19:12:40.152302 20951 glog.cpp:22] this is log
W20210823 19:12:40.152426 20951 glog.cpp:23] this is warnning
E20210823 19:12:40.152499 20951 glog.cpp:24] this is error
文章参考:
(1)http://docs.cocos.com/cocos2d-x/manual/zh/installation/CMake-Guide.html
(2)https://blog.csdn.net/kenstandlee/article/details/117335670
(3)https://www.cnblogs.com/cristiano-duan/p/12275271.html
linux glog 0.50版本 设置交叉编译器生成静态库相关推荐
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。
在Linux下如何使用GCC编译程序.简单生成 静态库及动态库. 本文适用于Linux下开发初学者.本文初步讲解在Linux下如何使用GCC编译程序.简单生成静态库及动态库. 一.关于安装.一般系 ...
- 嵌入式ARM+Linux 多个不同版本的交叉编译器的切换方法
工欲善其事,必先利其器!软件工具的选择与使用,是开发人员必须重视的事情. 我这里在VM虚拟机安装的CentOS 6.5,开发编译基于ARM的嵌入式Linux,安装了几个版本的交叉编译器,以下是如何切换 ...
- React Native 0.50版本新功能简介
React Native在2017年经历了众多版本的迭代,从本人接触的0.29版本开始,到前不久发布的0.52版本,React Native作为目前最受欢迎的移动跨平台方案.虽然,目前存在着很多的功能 ...
- Unity DOTS ECS 0.50版本,海浪Demo
目前更新了新版ECS,移步新文章 ECS1.0.10海浪demo更新 国内2022-3-17更新了ECS 0.50版本,目前unity2020.3版本可以用,2021会报错; 安装 manifest. ...
- Linux下用gcc生成静态库和动态库及练习使用OpenCV
我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...
- linux下生成静态库和动态库
linux下生成静态库和动态库 一.动态库.静态库简介 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常.本质上 ...
- linux 头文件卫士,条件编译,头文件,静态库,共享库与多文件编程
原标题:条件编译,头文件,静态库,共享库与多文件编程 本文转载自嵌入式Linux中文站条件编译 条件编译即满足某些条件的时候编译某部分代码,常用于开发多个版本的程序,当满足条件A时,编译出免费版本的软 ...
- 关于不同版本VS编译获得的静态库、动态库的兼容性
看了上一篇博客还是在6月13号,一直想着写一些东西,也准备了很多内容,没想到一直拖到了现在.今天终于掀开了我的笔记本盖子,按下了开机按钮,双击浏览器图标打开了博客页(浏览器图标都差点找不到了~~),赶 ...
- linux编译ios动态库,[Linux] linux下生成静态库和动态库
g++使用 用g++编译hello world 1. 编写hello world代码 2. 使用g++命令编译生成可执行文件hello.out 3. g++命令规则 预编译 g++ -E hello. ...
最新文章
- 某程序员求助:隔壁组组长常常微信骚扰自己怎么办?组长和自己都是男生,自己是双性恋,但想找个年轻的!网友:信息量太大!...
- 【管理心得之一】不要用“可有可无”的事,挑战他人对这件事的原则和底线...
- windows模糊查询指定进程是否存在
- FPGA之道(43)编写纯净的组合或时序逻辑
- UML中的stereotype
- Angular 下的 function
- HTTP的长连接和短连接通俗解释以及应用场景
- ocs 2007 r2 服务体验
- Linux 解压命令大全
- 【流水账】对Pupper的软件设备进行配置(树莓派)
- CorelDRAW入门教程-用CDR制作漂亮小雨伞
- 基于Vision Transformer的视频哈希检索识别虚假视频
- SQL Server 数据库之数据完整性
- 获取随机数的n种方法,你知道几种
- CentOS7.3下Zabbix3.5之微信报警配置
- 零和博弈、正和博弈和负和博弈
- SQL WEEK()函数
- SPA(单页面web应用)和MPA(多页面web应用)的区别
- gc java ibm_月光软件站 - 编程文档 - Java - IBM JVM 1.4.1 GC与内存管理
- 应用和产业齐步走(转)