folly库安装(4)folly依赖的重要组件安装:double-conversion, google-gflags, glog, fmt, googletest, boost等

article/2025/11/5 20:19:57

folly库依赖的组件版本可以在build\fbcode_builder\manifests目录查看,比如需要查看double-conversion的版本,只需要打开double-conversion文件,就能查看到依赖文件的详细版本信息。

这篇文章,我会把double-conversion, google-gflags, glog, fmt, googletest, boost安装都讲完,这些都是我实践检验过的。

说明:我安装了folly-2020.12.28.00,因为版本高的安装时会报很多错,这个低版本的很顺利。

一、folly依赖的重要组件:double-conversion的安装

1、下载

解压缩:tar -zxvf v3.1.4.tar.gz

2、安装

(1)cmake . -DBUILD_TESTING=ON

(2)make

(3)make install

(4)test/cctest/cctest --list | tr -d '<' | xargs test/cctest/cctest

注意:

Use -DBUILD_SHARED_LIBS=ON to enable the compilation of shared libraries. Note that this disables static libraries. There is currently no way to build both libraries at the same time with cmake.

Use -DBUILD_TESTING=ON to build the test executable.

二、folly依赖的重要组件:google-gflags的安装

folly依赖的其他组件安装都挺顺利的,但在安装glog时,make到46%左右就会报错:

(1)undefined reference to `std::__cxx11::basic_string -- gcc版本问题

(2)undefined reference to ‘google::FlagRegisterer::FlagRegisterer -- glog中gflags路径错误

所以gflags的安装就不能按照网络上所说的来安装,需要这么做:

1、下载

解压缩:tar -zxvf v2.2.2.tar.gz

2、设置gcc路径

export CC=<替换成实际路径>/gcc7.4.0/bin/gcc

export CXX=<替换成实际路径>/gcc7.4.0/bin/g++

3、安装

(1)cd gflags-2.2.2/

(2)mkdir _build && cd _build

(3)cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_gflags_LIB=ON ..

(4)make

(5)make install

三、folly依赖的重要组件:glog的安装

1、下载

解压缩:tar -zxvf v0.4.0.tar.gz

2、修改CMakeList.txt

增加下面2行:

find_package(gflags 2.2.0)

target_link_libraries(gflags)

我把这2行放在下面这2行代码前面:

if (WITH_GFLAGS)

find_package (gflags 2.2.0)

3、安装

(1)cd glog-0.4.0/

(2)mkdir _build && cd _build

(3)cmake -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON ..

(4)make

(5)make install

四、folly依赖的重要组件:fmt的安装

下面这些组件的安装都挺顺利的,除了boost的安装过程稍微多花一些时间。

1、下载

解压缩:tar -zxvf 6.1.1.tar.gz

2、安装

(1)cd fmt-9.1.0

(2)mkdir _build && cd _build

(3)cmake ..

(4)make -j$(nproc)

(5)sudo make install

五、folly依赖的重要组件:googletest的安装

1、下载

解压缩:tar -zxvf release-1.10.0.tar.gz

2、安装

(1)cd googletest-release-1.8.0 &&

(2)mkdir _build && cd _build

(3)cmake ..

(4)make

(5)make install

六、folly依赖的重要组件:boost的安装

1、下载

解压缩:tar -jxvf boost_1_69_0.tar.bz2

2、安装

(1)cd boost_1_69_0

(2)./bootstrap.sh

(3)./b2 (耗时几十分钟,中间会报一些包错误,不用管)

(4)sudo ./b2 install

这些依赖安装后,再安装folly可以顺利通过了,没必要所有的依赖都装。


http://chatgpt.dhexx.cn/article/7BC9NanN.shtml

相关文章

C++学习(四):Facebook 的 C++ 11 组件库 Folly Futures

Futures 是一种通过自然的、可组合的方式表达异步计算的模式。这篇博文介绍了我们在 Facebook 中使用的一种适用于 C11 的 futures 实现&#xff1a;Folly Futures。 为什么要使用异步&#xff1f; 想象一个服务 A 正在与服务 B 交互的场景。如果 A 被锁定到 B 回复后才能继续…

folly::ConcurrentSkipList 详解

SkipList 原理及构造过程 SkipList 是受多层链表的启发而设计出来的。实际上&#xff0c;最理想的情况是上面每一层链表的节点个数&#xff0c;是下面一层的节点个数的一半&#xff0c;这样查找过程就非常类似于一个二分查找&#xff0c;使得查找的时间复杂度可以降低到 O(log…

Facebook Folly源代码分析

Folly是Facebook的一个开源C11组件库&#xff0c;它提供了类似Boost库和STL的功能&#xff0c;包括散列、字符串、向量、内存分配、位处理等&#xff0c;用于满足大规模高性能的需求。 6月初&#xff0c;Facebook宣布将其内部使用的底层C组件库Folly开源&#xff0c;本文尝试对…

folly官方例子

folly官方例子 Future<vector<LeafResponse>> fanout(const map<Leaf, LeafReq> &leafToReqMap,chrono::milliseconds timeout) {vector<Future<LeafResponse>> leafFutures;for (const auto &kv : leafToReqMap) {const auto &leaf…

Facebook 的 C++ 11 组件库 Folly Futures

英文原版&#xff1a;https://code.facebook.com/posts/1661982097368498/futures-for-c-11-at-facebook/ https://www.oschina.net/translate/futures-for-c-11-at-facebook http://www.lupaworld.com/article-254822-1.html Futures 是一种通过自然的、可组合的方式表达异…

交叉编译folly库

假定交叉编译链工具所在目录为&#xff1a;/home/softwares/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/&#xff0c;其c编译器为&#xff1a;/home/softwares/gcc-ubuntu-9.3.0-2020.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g 1. 下载folly源码&…

folly库安装(5)folly的安装

上面这些准备工作做完了&#xff0c;现在就可以安装folly了&#xff0c;其实这时folly的安装已经非常顺利了。网上有人说folly的安装很麻烦&#xff0c;最重要是上面的准备工作没做好&#xff0c;只要你按照我上面的文章&#xff0c;一步步做下来&#xff0c;安装成功是没问题的…

揭秘Facebook官方底层C++函数Folly

2019独角兽企业重金招聘Python工程师标准>>> Folly与Boost、当然还有std等组件库的关系是互为补充&#xff0c;而不是彼此竞争。实际上&#xff0c;只有当我们需要的东西既没有&#xff0c;也无法满足所需的性能要求时&#xff0c;我们才开始定义自己的组件。 性能问…

《设计原则》(一)

易理解性和易使用性的设计原则 提供一个好的概念模式&#xff1b;&#xff08;一个好的概念模式使用户能够预测操作的行为效果&#xff09;可视性(消除执行阶段和评估阶段的鸿沟)&#xff1b;自然匹配&#xff1b;&#xff08;利用物理环境类比和文化标准概念、空间类比&#…

C++设计模式的设计原则(面向对象八大设计原则)

面向对象设计八大设计原则 一、温故面向对象二、八大设计原则三、以史为鉴 先掌握八大设计原则&#xff0c;再详细看23种设计模式&#xff08;&#x1f448;点我&#xff09; 一、温故面向对象 &#xff08;1&#xff09;隔离变化&#xff1a;从宏观层面上来看&#xff0c;面向…

设计原则设计模式

导论 什么是设计原则&#xff1a;判断程序设计质量好坏的准则。什么是设计模式&#xff1a;软件设计过程中重复出现问题的解决方案设计原则的作用&#xff1a;指导抽象、类、类关系设计&#xff0c;相当于指导设计程序基础框架&#xff08;Rank-分层、Role-角色、Relation-类关…

设计原则详解

1.单一职责 一个类&#xff0c;只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线&#…

五大设计原则——SOLID

目录 简介&#xff1a; 1、单一职责原则&#xff08;SRP&#xff09; 2、开闭原则&#xff08;OCP&#xff09; 3、里式替换原则&#xff08;LSP&#xff09; 4、依赖倒置原则 (DIP) 5、接口隔离原则 (ISP) 简介&#xff1a; 无论是软件系统设计&#xff0c;还是代码实现…

1. 设计原则

文章目录 设计原则思维导图核心理论SOLID单一职责开放封闭里式替换接口隔离依赖反转 KISSDRYLOD 设计原则思维导图 核心理论 基于接口编程 “基于接口而非实现编程” - “Program to an interface, not an implementation”。 “接口”就是一组“协议”或者“约定”&#xff…

七大设计原则

一、七大设计原则 &#xff08;1&#xff09;单一职责原则 &#xff08;2&#xff09;接口隔离原则 &#xff08;3&#xff09;依赖倒置原则 &#xff08;4&#xff09;里氏替换原则 &#xff08;5&#xff09;开闭原则 &#xff08;6&#xff09;迪米特法则 &#xff0…

chrome浏览器截长图

使用chrome浏览器 打开开发者模式(更多工具->开发者工具) mac 按commandshiftp windows 按ctrlshiftp 然后输入capture 选择capture full size screenshot就可以了 截了个长图的例子

手把手教你截长图

1.截长图的工具 相信很多小伙伴在平时工作做都会碰见截图的问题&#xff0c;那正常的图&#xff0c;我们有各种方式去截取&#xff0c;例如&#xff1a;QQ的CtrlAltA&#xff0c;微信的AltA等等 但是呢&#xff0c;如果要用到长图的时候&#xff0c;就束手无策了&#xff0c;这…

python如何截长图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...

对WebElement截图 WebDriver.Chrome自带的方法只能对当前窗口截屏&#xff0c;且不能指定特定元素。若是需要截取特定元素或是窗口超过了一屏&#xff0c;就只能另辟蹊径了。 WebDriver.PhantomJS自带的方法支持对整个网页截屏。 下面提供几种思路。 方式一 针对WebDriver.Chro…

谷歌浏览器怎么截长图?

我们在使用电脑浏览网页的时候难免会需要进行一些长图的截取&#xff0c;而一般的截图只能实现一部分截取&#xff0c;那么我们要如何去实现这个操作呢&#xff1f;下面小编就给大家介绍一下怎么在谷歌浏览器上截长图的操作。 谷歌浏览器网页截长图怎么截&#xff1f; 1、进入C…

html2canvas截长图

github链接 一、下载运行后选择下图的html2canvas即可直接去到路由界面测试 二、下图是html2canvas路由页面&#xff0c;点击右上角的生成图片即可下载长图 三、源码路径&#xff08;html2canvas源码github&#xff09; 四、源码&#xff08;关键在generateImage 这个方法&…