Facebook刚刚开源了它的底层C++库Folly,带着尝鲜的激动心情,决定先把这个库编译出来
根据faceboo提供的readme文件中的描述:
我们需要准备的依赖包 有double-conversion ,gtest ,glog ,以及gflags
另外boost仅需要1.2以上的版本
其中编译double-conversion需要将/folly/下的 SConstruct.double-conversion脚本拷贝到[double-conversion]目录下
执行 [double-conversion/] scons -f SConstruct.double-conversion 命令 就可以编译出folly需要的两个.a库文件了
由于gtest1.50 以上不再支持make install ,所以我们需要将gtest包下的include目录拷贝到/usr/include.下,同理,最好也将gtest生成的库放在
/usr/lib/下
另外folly在编译的最后会生成benchmark的测试,需要用到gtest的源代码,这部分路径我不会设置,我直接将gtest目录放在了/folly/test/之下
依赖包编译好后,我们需要将double-conversion的引用关系设置好,README 中提示需要设置LDFLAGS/ CPPFLAGS,这个我没想明白怎么设置
,参考了github上的一个issue后
我在原始的configure.ac的对double-conversion检查的语句之前加入了以下两句
LDFLAGS ="-L/home/ubuntu/exp/double-conversion/";
CPPFLAGS="-I/home/ubuntu/exp/double-conversion/src";
不过貌似只有后面一句起了作用
做完以上那些 在folly/目录下执行
autoreconf
如果出现报错,请根据提示参数运行automake
接下来执行./configure
make
sudo make install
之前在ubuntu 10.04上编译,由于采用的是GCC4.4, 之后的库编译会发现对C++1x特性支持不够,导致最后的编译不能通过
所以如果需要在ubuntu10.04上编译的话,需要先升级GCC版本
暂时先记录这么多吧
根据faceboo提供的readme文件中的描述:
Dependencies
------------
- double-conversion (http://code.google.com/p/double-conversion/)
By default, the build tooling for double-conversion does not build
any libraries, which folly requires. To build the necessary libraries
copy folly/SConstruct.double-conversion to your double-conversion
source directory before building:
[double-conversion/] scons -f SConstruct.double-conversion
Then set CPPFLAGS/LDFLAGS so that folly can find your double-conversion
build:
[folly/] LDFLAGS=-L<double-conversion>/ CPPFLAGS=-I<double-conversion>/src/
configure ...
- googletest (Google C++ Testing Framework)
Grab gtest 1.6.0 from:
http://googletest.googlecode.com/files/gtest-1.6.0.zip
Unzip it inside of the test/ subdirectory.
- additional platform specific dependencies:
Ubuntu 12.04 64-bit
- g++
- automake
- autoconf
- libtool
- libboost1.46-all-dev
- libgoogle-glog-dev
This package has been removed from 12.04 -- use the one from 11.10
- gflags (packages need to be downloaded from below)
http://gflags.googlecode.com/files/libgflags-dev_2.0-1_amd64.deb
http://gflags.googlecode.com/files/libgflags0_2.0-1_amd64.deb
- scons (for double-conversion)
我们需要准备的依赖包 有double-conversion ,gtest ,glog ,以及gflags
另外boost仅需要1.2以上的版本
其中编译double-conversion需要将/folly/下的 SConstruct.double-conversion脚本拷贝到[double-conversion]目录下
执行 [double-conversion/] scons -f SConstruct.double-conversion 命令 就可以编译出folly需要的两个.a库文件了
由于gtest1.50 以上不再支持make install ,所以我们需要将gtest包下的include目录拷贝到/usr/include.下,同理,最好也将gtest生成的库放在
/usr/lib/下
另外folly在编译的最后会生成benchmark的测试,需要用到gtest的源代码,这部分路径我不会设置,我直接将gtest目录放在了/folly/test/之下
依赖包编译好后,我们需要将double-conversion的引用关系设置好,README 中提示需要设置LDFLAGS/ CPPFLAGS,这个我没想明白怎么设置
,参考了github上的一个issue后
我在原始的configure.ac的对double-conversion检查的语句之前加入了以下两句
LDFLAGS ="-L/home/ubuntu/exp/double-conversion/";
CPPFLAGS="-I/home/ubuntu/exp/double-conversion/src";
不过貌似只有后面一句起了作用
做完以上那些 在folly/目录下执行
autoreconf
如果出现报错,请根据提示参数运行automake
接下来执行./configure
make
sudo make install
之前在ubuntu 10.04上编译,由于采用的是GCC4.4, 之后的库编译会发现对C++1x特性支持不够,导致最后的编译不能通过
所以如果需要在ubuntu10.04上编译的话,需要先升级GCC版本
暂时先记录这么多吧