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中

[原创]CentOS6.4编译安装Facebook的folly库(gcc4.8.1boost1.5.3)的更多相关文章

  1. CentOS6.3编译安装Memcached

    要用到如下源码包: /usr/local/src/memcached/libevent-2.0.21-stable.tar.gz /usr/local/src/memcached/memcached- ...

  2. CentOS6.3编译安装Memcached的PHP客户端memcache

    在安装Memcached的PHP客户端memcache之前,可先看下先前的工作笔记: PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展? 安装PHP的memcache扩展 cd /us ...

  3. CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28

    [准备工作] #在编译安装lnmp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y r ...

  4. 【PHP升级】CentOS6.3编译安装 PHP5.4.38

    先前安装的PHP5.3.28(参考:CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28),现在准备升级PHP到5.4.38,有如下几个地方需要重新编译 ...

  5. CentOS6.3 编译安装LAMP(1):准备工作

    卸载yum或rpm安装的amp软件 #在编译安装lamp之前,首先先卸载已存在的rpm包. rpm -e httpd rpm -e mysql rpm -e php yum -y remove htt ...

  6. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25

    所需源码包: /usr/local/src/Apache-2.2.25/httpd-2.2.25.tar.gz 编译安装 Apache2.2.25 #切换到源码目录 cd /usr/local/src ...

  7. CentOS6.3 编译安装LAMP(2):编译安装 Apache2.4.6

    Apache官方说: 与Apache 2.2.x相比,Apache 2.4.x提供了很多性能方面的提升,包括支持更大流量.更好地支持云计算.利用更少的内存处理更多的并发等.除此之外,还包括性能提升.内 ...

  8. CentOS6.3 编译安装LAMP(3):编译安装 MySQL5.5.25

    所需源码包: /usr/local/src/MySQL-5.5.25/cmake-2.8.8.tar.gz /usr/local/src/MySQL-5.5.25/mysql-5.5.25.tar.g ...

  9. CentOS6.3 编译安装LAMP(4):编译安装 PHP5.2.17

    所需源码包: /usr/local/src/PHP-5.2.17/libmcrypt-2.5.8.tar.gz /usr/local/src/PHP-5.2.17/mhash-0.9.9.9.tar. ...

随机推荐

  1. Zend Studio 上 安装使用Aptana插件(html,css,js代码提示功能) .

    最近装了zend studio 9.0 用了段时间发现写html,css,js代码没提示,要开dreamwaver(对js代码提示也不好).就网上搜索了下,发现了Aptana插件,装上用了下,感觉不错 ...

  2. ASP.NET后台注册JS的方法

    1. 用Response.Write方法 代码如下: Response.Write("<script type='text/javascript'>alert("hel ...

  3. hdu-5680 zxa and set(水题)

    题目链接: zxa and set Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Other ...

  4. BZOJ 1040: [ZJOI2008]骑士 基环加外向树

    1040: [ZJOI2008]骑士 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1190  Solved: 465[Submit][Status] ...

  5. git之添加ssh

    1.ssh-keygen 2.cat ~/.ssh/id_rsa.pub 3.git config user.email "huangsy13@gmail.com" 4.git c ...

  6. js概念理解

    1.面向对象. 2.函数表达式. 3.递归. 4.闭包. 5.原型链. 6.作用域链. 7.上下文. 8.类. 9.活动对象. 10.w3c规范. 11.设计模式. 12.重构. 13.低耦合,高内聚 ...

  7. HTML+CSS学习总结:

    1. 注释:<div> 是一个块级元素,也就是说,浏览器通常会在 div 元素前后放置一个换行符. 提示:请使用 <div> 元素来组合块级元素,这样就可以使用样式对它们进行格 ...

  8. 追访现代主流程序员的家庭事业观---禅宗派程序员KUROKY

    Kuroky,一个被人遗忘的当代主流程序员. 在他的内心深处有着怎样的心路历程 他的快乐与悲伤,都是一个禅 独家专访kuroky: 记者:作为现代主流程序员,你内心的苦楚玉欢乐通过什么来发现? 大师: ...

  9. UI2_UITableViewDelete

    // AppDelegate.m // UI2_UITableViewDelete // // Created by zhangxueming on 15/7/14. // Copyright (c) ...

  10. Nginx集群(转)

    转自:http://hi.baidu.com/xingyuanju/blog/item/779a2a23b7ebb749935807f1.html http://hi.baidu.com/dianhu ...