[原创]CentOS6.4编译安装Facebook的folly库(gcc4.8.1boost1.5.3)

本文档详细介绍了如何在CentOS 6.4 64位环境下编译安装Facebook的开源库Folly,包括所需的依赖项安装、编译步骤及可能遇到的问题与解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  Folly: Facebook Open-souce LibrarY,Facebook开源的一个基础组件库,据说在大规模的场景中性能较高。目前因为自己负责的系统有几个地方性能较差,因此特意找来看看牛叉公司里别人都是怎么做的。简单瞄了几下源码,感觉代码还是比较清晰易懂,看上去至少比我司写的感觉清爽 T T
  由于Folly要求C++11支持,并且用到了boost,因此特意升级了最新版的gcc4.8.1及boost1.5.3,没想到一下子升级过头,git上的Folly直接下载后编译不过了,研究了下,发现Folly不支持最新的的gcc及boost,需要修改下代码,因此记录下。
 
 一、环境:
    CentOS6.4 64bit
    gcc4.8.1: http://gcc.gnu.org
    boost1.5.3: http://www.boost.org
    Folly Github: https://github.com/facebook/folly
 
 二、准备工作:
    根据folly目录下的readme,下载安装所需要的依赖,没带链接的,均为直接从CentOS6.4 iso安装镜像中直接安装,大家缺少什么,就自行yum安装下。
      命令格式:
      yum --disablerepo=\* --enablerepo=c6-media install libtool
      PS:这里是指定yum源为本机上 挂载的iso,可以联网的用户直接yum安装对应的依赖即可。
   需要的依赖列表:
    - g++(gcc之前已经更新到4.8.1,这里至少得升级到4.7)
    - automake
    - autoconf
    - libtool
    - libboost1.46-all-dev(boost之前已经更新到1.5.3,因此直接用1.5.3了)
    - libgoogle-glog-dev
    - gflags (packages need to be downloaded from below) (deb还是rpm根据自己的系统选择)
    - scons (for double-conversion)
 
    - double-conversion 
    - googletest (Google C++ Testing Framework)
 
 三、开始编译安装
  1.编译double-conversion (需要拷贝folly的文件到double-sconversion下
       cp folly/SConstruct.double-conversion double-conversion
       cd ../double-sconversion
       scons -f SConstruct.double-conversion
 
   2.安装googletest
       unzip unzip gtest-1.6.0.zip -d folly/test
 
   3.编译安装folly( 在folly目录下执行,可能会遇到一些错误,错误解决方法见最下方
       aclocal
       autoreconf
       automake --force-missing --add-missing
 
        下方的double-conversion替换成自己对应的目录
       LDFLAGS="-L /home/upload/double-conversion" CPPFLAGS="-I /home/upload/double-conversion/src" ./configure --enable-static --disable-shared
 
       make
       make install
 
四、编译时可能出现的问题
1. 出现  .././folly/FBVector.h:431:12: 错误:‘has_trivial_destructor’不是‘std’的成员
 原因:gcc4.8后,把has_trivial_destructor 函数改成了is_trivially_destructible
  解决方法:修改FBVector.h文件,把所有的has_trivial_destructor全部改成is_trivially_destructible
 
2.出现 .././folly/detail/ThreadLocalDetail.h:205:7: 错误: ‘lock_guard’不是‘boost’的成员
      或 .././folly/detail/ThreadLocalDetail.h:221:49: 错误: ‘g’在此作用域中尚未声明
  原因:缺少头文件引用
  解决方法:在folly/detail/ThreadLocalDetail.h头文件中添加引用 #include <boost/thread/lock_guard.hpp>
 
3.出现 error while loading shared libraries: libgflags.so.2
  原因:没安装gflags库或共享库路径中没包含libgflags.so.2所在的路径
  解决方案:
    我的gflags lib库安装在/usr/lib下(没有的话,需要自行搜索下or确认下是否安装),因此添加对应目录到共享库配置文件中,执行
   echo "/usr/lib" >> /etc/ld.so.conf
   ldconfig
  
  PS:也可以把路径加入到环境变量LD_LIBRARY_PATH中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值