Ubuntu18.04安装facebook folly库

2023-11-15

安装步骤

安装boost
ubuntu18.04安装的boost有点陈旧,因此自行下载最新版本,执行安装即可:https://www.boost.org/
具体步骤直接参考readme

安装gtest

wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz && \
tar zxf release-1.8.0.tar.gz && \
rm -f release-1.8.0.tar.gz && \
cd googletest-release-1.8.0 && \
cmake . && \
make && \
make install

安装一些必要的组件:

sudo apt-get install \
    g++ \
    cmake \
    libevent-dev \
    libdouble-conversion-dev \
    libgoogle-glog-dev \
    libgflags-dev \
    libiberty-dev \
    liblz4-dev \
    liblzma-dev \
    libsnappy-dev \
    make \
    zlib1g-dev \
    binutils-dev \
    libjemalloc-dev \
    libssl-dev \
    pkg-config \
    libunwind-dev

注意,如果之前通过apt方式安装过其他的glog,请提前卸载,否则可能出现冲突。

安装fmt库:

git clone https://github.com/fmtlib/fmt.git && cd fmt

mkdir _build && cd _build
cmake ..

make -j$(nproc)
sudo make install

安装一些高级功能调试用的库,非必须:

sudo apt-get install \
    libunwind8-dev \
    libelf-dev \
    libdwarf-dev

安装folly:

git clone git@github.com:facebook/folly.git
cd folly

mkdir _build && cd _build
cmake ..
make -j $(nproc)
sudo make install # 可以自定义安装目录,默认是/usr/local/下

编译执行

因为folly本身依赖项比较多,这里以一个简单的Future为例子,说明具体的使用方式。

首先给出代码1.cc

#include <folly/futures/Future.h>
#include <folly/executors/ThreadedExecutor.h>
#include <iostream>
using namespace folly;
using namespace std;

void foo(int x) {
    // do something with x
    cout << "foo(" << x << ")" << endl;
}

int main() {
    // ...
    folly::ThreadedExecutor executor;
    cout << "making Promise" << endl;
    Promise<int> p;
    Future<int> f = p.getSemiFuture().via(&executor);
    auto f2 = move(f).thenValue(foo);
    cout << "Future chain made" << endl;

    // ... now perhaps in another event callback

    cout << "fulfilling Promise" << endl;
    p.setValue(42);
    move(f2).get();
    cout << "Promise fulfilled" << endl;
    return 0;
}

给出编译的CMake文件,具体的CMake的用法,可以参考博客:

  • https://blog.csdn.net/qq_35976351/article/details/104453888
  • https://blog.csdn.net/qq_35976351/article/details/106866808
  • http://www.yeolar.com/note/2014/12/16/cmake-how-to-find-libraries/
  • https://zhenshenglee.github.io/2016/10/05/161005-CMakeFind%E6%A8%A1%E5%9D%97/
cmake_minimum_required(VERSION 3.7)

find_package(folly REQUIRED)
find_package(Threads REQUIRED)
find_package(gflags REQUIRED)

set(CMAKE_CXX_STANDARD 14)

set_and_check(FOLLY_INCLUDE_DIR /usr/local/include/folly)
set_and_check(FOLLY_CMAKE_DIR /usr/local/lib/cmake/folly)
if (NOT TARGET Folly::folly)
    include("${FOLLY_CMAKE_DIR}/folly-targets.cmake")
endif()

set(FOLLY_LIBRARIES Folly::folly)

if (NOT folly_FIND_QUIETLY)
    message(STATUS "Found folly: ${PACKAGE_PREFIX_DIR}")
endif()

add_executable(main 1.cc)
target_link_libraries(main ${FOLLY_LIBRARIES})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04安装facebook folly库 的相关文章

随机推荐

  • LayUI系列(一)之layui介绍以及登录功能的实现

    文章目录 一 layui简介 1 1 layui介绍 1 2 主要构成 1 3 迭代历程 1 4 layui easyui和bootstrap对比 1 4 1 layui与bootstrap对比 这两个都属于ui渲染框架 1 4 2 lay
  • TensorFlow框架做实时人脸识别小项目(一)

    人脸识别是深度学习最有价值也是最成熟的的应用之一 在研究环境下 人脸识别已经赶上甚至超过了人工识别的精度 一般来说 一个完整的人脸识别项目会包括两大部分 人脸检测与人脸识别 下面就我近期自己练习写的一个 粗糙 的人脸识别小项目讲起 也算是做
  • 二、关系模型

    关系模型 关系模型由关系数据结构 关系操作集合和关系完整性约束三部分组成 关系数据结构 关系模型的数据结构非常简单 只包含单一的数据结构 关系 域 一组具有相同数据类型的值的集合 笛卡儿积 在域上的一种集合运算 例如A 1 2 B a b
  • NNDL 作业7:第五章课后题(1×1 卷积核

    习题一 证明卷积具有交换性 即证明公式 首先 宽卷积定义为 其中 表示宽卷积运算 我们不妨先设一个二维图像和一个二维卷积核 然后对该二维图像X进行零填充 两端各补U 1 和V 1 个零 得到全填充的图像 现有 根据宽卷积定义 为了让x的下标
  • 学 Python 这么久,终于把类函数 & 成员函数 & 静态函数给整明白了!

    前言 学过 Python 的小伙伴应该知道 在类定义过程中 会依据对具体需求的分析 对类函数 成员函数 静态函数进行声明与定义 Python 基础稍弱的同学可能会对这三个函数的名称有些陌生 但你很有可能曾经见到过他们仨 只是没认出来而已 开
  • el-menu动态渲染多级菜单

    思路 创建子菜单递归组件 这里我命名为MySubMenu vue 父组件 引用自定义组件MySubMenu 将菜单数组传递给子组件
  • qt 信号量 linux 信号量 semctl,Linux信号量 共享内存和消息队列

    Linux信号量 共享内存和消息队列 Linux信号量 共享内存和消息队列 1 信号量 使用信号量可以实现进程间同步 主要函数定义 include int semctl int sem id int sem num int command
  • Chisel 手册 英文版

    Chisel Manual Jonathan Bachrach Huy Vo Krste Asanovi EECS Department UC Berkeley jrb huytbvo krste eecs berkeley edu Apr
  • HuTool 工具类简单使用

    官方文档 https hutool cn docs 简介 Hutool是一个小而全的Java工具类库 通过静态方法封装 降低相关API的学习成本 提高工作效率 使Java拥有函数式语言般的优雅 让Java语言也可以 甜甜的 Hutool中的
  • Python爬虫实战案例——第三例

    文章中所有内容仅供学习交流使用 不用于其他任何目的 严禁将文中内容用于任何商业与非法用途 由此产生的一切后果与作者无关 若有侵权 请联系删除 起点中文网月票榜加密字体处理 字体加密的原理 就是将一种特定的字体库来代替浏览器本身的字体库显示的
  • JeecgBoot页面级联选择框(三种方法)

    JeecgBoot页面级联选择框 三种方法 1 form表单级联选择框 已实践 2 j vxe table联动示例 已实践 3 j editable table三级联动 简单测试 只贴代码 不做过多说明 一 form表单级联选择框 1 1
  • 【Mac】Mac 下安装MySQL优化工具mysqltuner执行报错 [!!] Attempted to use login credentials

    1 背景 base lcc lcc MySQLTuner perl mysqltuner pl socket var lib mysql mysql sock gt gt MySQLTuner 1 7 19 Major Hayden
  • FPGA选型

    原来SG6twotwo FPGA推荐型号0 GX480系列 FPGA推荐型号1 GX570系列 FPGA推荐型号2 GX660系列 SG622 FPGA型号 10AX027 F34 10AX048 10AX057 10AX066 引脚数量
  • postcss_PostCSS简介

    postcss Most developers who spend their time working with CSS are familiar with preprocessors such Less Sass and Stylus
  • [管理与领导-62]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱 - 了解职场中潜法则,保护自己

    目录 前言 生存法则一 老板对你讲的道理 永远都是对他有利的 生存法则二 目标要明确 拿钱要及时 生存法则三 有点的领导夸你越多 你得到的越少 生存法则四 表面讲大义 心里是生意 生存法则五 得罪人是要付出代价的 生存法则六 别人对你越坏
  • 物理选择题~~好好答哦

    a啊 D
  • 桶排序、计数排序、基数排序 -- 大数据排序,线性排序以及应用场景

    桶排序 桶排序其实就是把数据分到各个桶中 比如把100个数据到10个桶中 然后每个桶再进行排序比如快排 桶和桶之间也是有顺序的 桶排序是线性排序 也就是时间复杂度为O n 假设数据有 n 个 把它们均匀地划分到 m 个桶内 每个桶里就有 k
  • 计算机网络常见面试题总结(一)

    本文主要内容转载自 http blog csdn net jxh 123 article details 40316081 整理一下计算机网络部分的面试常考点 参考书籍 计算机网络 第五版 谢希仁的那本 希望对大家有所帮助 OSI TCP
  • 网站服务器ftp密码设置,服务器 设置ftp密码

    服务器 设置ftp密码 内容精选 换一换 本节操作介绍Linux操作系统云服务器使用重新挂载系统盘的方式重置密码的操作步骤 本文档适用于X86架构的CentOS 7 Ubuntu EulerOS操作系统云服务器 进入单用户模式下重置root
  • Ubuntu18.04安装facebook folly库

    安装步骤 安装boost ubuntu18 04安装的boost有点陈旧 因此自行下载最新版本 执行安装即可 https www boost org 具体步骤直接参考readme 安装gtest wget https github com