folly库的安装-Ubuntu18.04

版权声明:原创文章,欢迎转载,但请注明出处,谢谢。 https://blog.csdn.net/qiuguolu1108/article/details/106445831

folly库是facebook的一个C++基础库。

一、环境

本文使用Ubuntu18.04安装folly库,g++和cmake的版本如下:

root@learner:~# g++ --version
g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

root@learner:~# cmake --version
cmake version 3.10.2

注意:g++需要支持C++14

二、安装依赖

googletest的安装
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
安装下列的package
sudo apt-get install \
    g++ \
    cmake \
    libboost-all-dev \
    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
安装fmt
git clone https://github.com/fmtlib/fmt.git && cd fmt

mkdir _build && cd _build
cmake ..

make -j$(nproc)
sudo make install
安装调试相关的依赖
apt-get install \
    libunwind8-dev \
    libelf-dev \
    libdwarf-dev

三、下载安装folly

folly的github地址:https://github.com/facebook/folly

下载folly
git clone https://github.com/facebook/folly.git
编译安装folly
cd folly
mkdir _build && cd _build
cmake ..
make -j $(nproc)
make install 

folly库安装完成了,下面写个小程序测试一下。

四、测试

#include <folly/concurrency/ConcurrentHashMap.h>
#include <string>
#include <iostream>

class Student 
{
public:
    Student(std::string name, int id, std::string email)
        : m_name(name), m_id(id), m_email(email)
    {}

    void printSelf() const 
    {
        std::cout << "name: " << m_name << " "
            << "id: " << m_id << " "
            << "email: " << m_email << std::endl;
    }

private:
    std::string m_name;
    int m_id;
    std::string m_email;
};

int main() 
{
    folly::ConcurrentHashMap<std::string, Student> students;
    students.insert("Tom", Student("Tom", 1, "[email protected]"));
    students.insert("Lilly", Student("Lilly", 2, "[email protected]"));

    for (const auto& st : students) 
    {
        st.second.printSelf();
    }
    
    return 0;
}
root@learner:~# g++ hashmap.cpp -lfolly -lglog -lgflags -lpthread -ldl -ldouble-conversion -liberty
root@learner:~# ./a.out 
name: Tom id: 1 email: [email protected]
name: Lilly id: 2 email: [email protected]

运行成功~~~

示例复制自:https://www.cnblogs.com/albizzia/p/10824721.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章