ubuntu 编译folly库

Facebook刚刚开源了它的底层C++库Folly,带着尝鲜的激动心情,决定先把这个库编译出来

根据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/ CPPFLAGS=-I/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版本

暂时先记录这么多吧

你可能感兴趣的:(ubuntu 编译folly库)