gflags学习笔记(一)gflags的介绍和安装(ubuntu环境)


前言

什么是GFLAGS

Gflags是一种命令行解析工具,主要用于解析用命令行执行可执行文件时传入的参数。与getops()不同的是,在gflags中flag可以分散的定义在各个文件之中,而不用定义在一起,这就意味着在我们可以在一个单独的文件中只定义这个文件所需要用到的一些flag,链接了该文件应用都可以使用该文件中的flag,这样就能非常方便的实现代码的复用,如果不同的文件定义了相同的flag,则会产生错误,所以需要明确规范gflags的使用规范。
gflags在2008年首次推出,至今已有10年时间,目前有很多公司都在用gflags。

gflags的优势

用gflags跟用配置文件相比,能实现的功能其实没多大差别。但用gflags有个好处就是,很容易跟脚本结合在一起。比如最近笔者需要调用一个用了gflags的程序将某个文件里头的所有用户都执行某个操作,这个应用程序如果不用gflags,则需要在配置里头指定要读取的文件,甚至需要在程序里头添加读文件逐行进行处理的代码。现在用了gflags就很方便了。

cat /data/pd.log | while read line;do ./baike_oidb_client …/conf/baike.conf --action=1 --uins=$line;done

直接一行shell脚本搞定,当然就想这行命令所显示的,有些固定项我们也可以用配置文件,免得整个命令太长。

当然其他好处就是做模块隔离,这个跟宏相比的好处是动态运行时启动或者挂掉某些功能,而不需要重新编译。

gflags安装和使用(ubuntu环境)

下载

通过github官方或通过git 命令clone

  1. 通过github官方下载最新的gtest源码。
  2. 通过命令
    git clone https://github.com/gflags/gflags

配置

  1. 下载后解压文件下:
总用量 136
-rw-rw-r-- 1 zhouchen zhouchen  1447  728 05:06 appveyor.yml
-rw-rw-r-- 1 zhouchen zhouchen    32  728 05:06 AUTHORS.txt
drwxrwxr-x 3 zhouchen zhouchen  4096  728 05:06 bazel/
-rw-rw-r-- 1 zhouchen zhouchen   629  728 05:06 BUILD
-rw-rw-r-- 1 zhouchen zhouchen 13050  728 05:06 ChangeLog.txt
drwxrwxr-x 2 zhouchen zhouchen  4096  728 05:06 cmake/
-rw-rw-r-- 1 zhouchen zhouchen 29703  921 17:45 CMakeLists.txt
-rw-rw-r-- 1 zhouchen zhouchen  1479  728 05:06 COPYING.txt
drwxrwxr-x 2 zhouchen zhouchen  4096  728 05:06 doc/
-rw-rw-r-- 1 zhouchen zhouchen   113  728 05:06 .gitattributes
-rw-rw-r-- 1 zhouchen zhouchen   407  728 05:06 .gitignore
-rw-rw-r-- 1 zhouchen zhouchen  4617  728 05:06 INSTALL.md
-rw-rw-r-- 1 zhouchen zhouchen 13662  728 05:06 README.md
drwxrwxr-x 2 zhouchen zhouchen  4096  728 05:06 src/
drwxrwxr-x 4 zhouchen zhouchen  4096  728 05:06 test/
-rw-rw-r-- 1 zhouchen zhouchen   409  728 05:06 .travis.yml
-rw-rw-r-- 1 zhouchen zhouchen   255  728 05:06 WORKSPACE

  1. 设置动态库
    CMakeList.txt中默认编译gflags为静态库,若想实现编译出动态库,需要设置
    gflags-master/CMakeList.txt
gflags_define (BOOL BUILD_SHARED_LIBS          "Request build of shared libraries."                                       ON ON)
gflags_define (BOOL BUILD_STATIC_LIBS          "Request build of static libraries (default if BUILD_SHARED_LIBS is OFF)." OFF OFF)
  1. 编译出gtest自带的test
    还是在这个CMakeList.txt设置
gflags_define (BOOL BUILD_TESTING              "Enable build of the unit tests and their execution using CTest."          ON ON)

编译

cd gflags-master
mkdir build
cd build
cmake ..
make

安装

sudo mkdir /usr/lib/gflags
cd gflags-master/build/lib
sudo cp * /usr/lib/gflags/
cd gflags-master/include
sudo cp ./gflags /usr/include/gflags -R
sudo chmod 755 /usr/lib/gflags/*.so
sudo chmod 755 /usr/include/gflags/ -R

到此,Gflags就算配置完成,可以在C++程序中以动态链接库的方式使用。
后续学习test例子。


  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Ubuntu安装gflags,可以按照以下步骤进行操作: 1. 首先,通过以下命令克隆gflags的源代码库: ``` git clone https://github.com/gflags/gflags.git ``` 2. 进入克隆的代码库目录: ``` cd gflags ``` 3. 接下来,需要安装编译工具和依赖项。使用以下命令安装这些依赖项: ``` sudo apt-get install cmake sudo apt-get install g++ ``` 4. 创建一个build目录并进入该目录: ``` mkdir build cd build ``` 5. 在build目录中,运行以下命令以生成Makefile: ``` cmake .. ``` 6. 使用以下命令编译和安装gflags库: ``` make sudo make install ``` 7. 安装完成后,您可以在Ubuntu上使用gflags库了。 请注意,安装过程中可能会遇到其他依赖项或错误。如果出现错误,请根据错误提示解决相关问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Ubuntu 系统安装 Gflags](https://blog.csdn.net/qq_42102546/article/details/129369962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ubuntu下Gflags安装、配置、使用](https://blog.csdn.net/kenjianqi1647/article/details/106598057)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖茄子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值