目标:设置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版本 设置交叉编译器生成静态库相关推荐

  1. 在Linux下如何使用GCC编译程序、简单生成静态库及动态库。

    在Linux下如何使用GCC编译程序.简单生成 静态库及动态库.   本文适用于Linux下开发初学者.本文初步讲解在Linux下如何使用GCC编译程序.简单生成静态库及动态库. 一.关于安装.一般系 ...

  2. 嵌入式ARM+Linux 多个不同版本的交叉编译器的切换方法

    工欲善其事,必先利其器!软件工具的选择与使用,是开发人员必须重视的事情. 我这里在VM虚拟机安装的CentOS 6.5,开发编译基于ARM的嵌入式Linux,安装了几个版本的交叉编译器,以下是如何切换 ...

  3. React Native 0.50版本新功能简介

    React Native在2017年经历了众多版本的迭代,从本人接触的0.29版本开始,到前不久发布的0.52版本,React Native作为目前最受欢迎的移动跨平台方案.虽然,目前存在着很多的功能 ...

  4. Unity DOTS ECS 0.50版本,海浪Demo

    目前更新了新版ECS,移步新文章 ECS1.0.10海浪demo更新 国内2022-3-17更新了ECS 0.50版本,目前unity2020.3版本可以用,2021会报错; 安装 manifest. ...

  5. Linux下用gcc生成静态库和动态库及练习使用OpenCV

    我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为 静态库和动态库两种.静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...

  6. linux下生成静态库和动态库

    linux下生成静态库和动态库 一.动态库.静态库简介 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常.本质上 ...

  7. linux 头文件卫士,条件编译,头文件,静态库,共享库与多文件编程

    原标题:条件编译,头文件,静态库,共享库与多文件编程 本文转载自嵌入式Linux中文站条件编译 条件编译即满足某些条件的时候编译某部分代码,常用于开发多个版本的程序,当满足条件A时,编译出免费版本的软 ...

  8. 关于不同版本VS编译获得的静态库、动态库的兼容性

    看了上一篇博客还是在6月13号,一直想着写一些东西,也准备了很多内容,没想到一直拖到了现在.今天终于掀开了我的笔记本盖子,按下了开机按钮,双击浏览器图标打开了博客页(浏览器图标都差点找不到了~~),赶 ...

  9. linux编译ios动态库,[Linux] linux下生成静态库和动态库

    g++使用 用g++编译hello world 1. 编写hello world代码 2. 使用g++命令编译生成可执行文件hello.out 3. g++命令规则 预编译 g++ -E hello. ...

最新文章

  1. 某程序员求助:隔壁组组长常常微信骚扰自己怎么办?组长和自己都是男生,自己是双性恋,但想找个年轻的!网友:信息量太大!...
  2. 【管理心得之一】不要用“可有可无”的事,挑战他人对这件事的原则和底线...
  3. windows模糊查询指定进程是否存在
  4. FPGA之道(43)编写纯净的组合或时序逻辑
  5. UML中的stereotype
  6. Angular 下的 function
  7. HTTP的长连接和短连接通俗解释以及应用场景
  8. ocs 2007 r2 服务体验
  9. Linux 解压命令大全
  10. 【流水账】对Pupper的软件设备进行配置(树莓派)
  11. CorelDRAW入门教程-用CDR制作漂亮小雨伞
  12. 基于Vision Transformer的视频哈希检索识别虚假视频
  13. SQL Server 数据库之数据完整性
  14. 获取随机数的n种方法,你知道几种
  15. CentOS7.3下Zabbix3.5之微信报警配置
  16. 零和博弈、正和博弈和负和博弈
  17. SQL WEEK()函数
  18. SPA(单页面web应用)和MPA(多页面web应用)的区别
  19. gc java ibm_月光软件站 - 编程文档 - Java - IBM JVM 1.4.1 GC与内存管理
  20. 应用和产业齐步走(转)

热门文章

  1. mapState使用方法
  2. 直播对话RT-Thread大赛一等奖获奖者:时光空间立方从设计到实现
  3. 《筱静观察》 | 区块链:价值互联网的未来
  4. 16路模拟开关的控制设计
  5. 数据库设计:概念结构设计
  6. bowtie 加mn标签_bowtie和bowtie2用法详解
  7. 设计原则-合成复用原则
  8. 韩国队战前损失中场核心 奇诚庸伤退亚洲杯
  9. 【Cocos Creator实战教程(7)】——猴子摘月亮(平台动作,碰撞检测详解)
  10. 王涛入选 “2021年中国产业创新百人榜”