/ 中存储网

告诉你32位Ubuntu编译hiphop全攻略的方法及命令

2015-02-03 00:00:00 来源:中存储网

hiphop是facebook的一个开源项目。 目的是将php编译成更高效的c++代码在服务器上运行以达到增快速度的目的。据说能做到10~20倍的提升。

Hiphop的项目地址在:https://github.com/facebook/hiphop-php。官方hiphop只有64位版本,所以该网站所有信息都是以64位机器为基础。幸好有位买不起64cpu的哥们在:https://github.com/metagoto/hiphop-php 提供了32位版本,不过这哥们显然没把这当回事,放上去后就只顾着更新代码,咋编译还是照抄官方的。为了能够让更多的人在32位机器上运行hiphop,接下来将近期编译hiphop的过程给大家做个简单介绍。

本机编译环境:32位Ubuntu10.1.4。

依赖包:

cmake 2.6 is the minimum version 
g++/gcc 4.3 is the minimum version 
Boost 1.37 is the minimum version 
flex 
bison 
re2c 
libmysql 
libxml2 
libmcrypt 
libicu 4.2 is the minimum version 
openssl 
binutils 
libcap 
gd 
zlib 
tbb Intel's Thread Building Blocks 
Oniguruma 
libpcre 
libexpat 
libmemcached

ubuntu可以用接下来的Linux命令加载以上包

sudo apt-get install git-core cmake g++ libboost-dev flex 
bison re2c libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev 
openssl binutils-dev libcap-dev libgd2-xpm-dev zlib1g-dev libtbb-dev 
libonig-dev libpcre3-dev autoconf libtool libcurl4-openssl-dev 
libboost-system-dev libboost-program-options-dev 
libboost-filesystem-dev wget libmemcached-dev

在编译过程中遇到缺少其它包的情况,也可以用:sudo apt-get install 来安装。

在默认路径“/home/user”(这里的user指的是你linux的用户目录)

git clone git://github.com/metagoto/hiphop-php.git  
cd hiphop-php  
export CMAKE_PREFIX_PATH=/home/user/  //user同上面说明  
export HPHP_HOME=`/bin/pwd`  
export HPHP_LIB=`/bin/pwd`/bin  
git submodule init  
git submodule update

执行最后一步命令的时候,或许会出现一个错误:

fatal: reference is not a tree: 208b1a075c2448e1fc0c61d4bb268b161a3d992a  
Unable to checkout '208b1a075c2448e1fc0c61d4bb268b161a3d992a' in submodule path 'src/third_party/libmbfl'

在搜索中输入:208b1a075c2448e1fc0c61d4bb268b161a3d992a 查询,就会发现这个错误时因为包libmbfl已经改名为libmbf-old,而上面的代码中还没来得及做相应的修改,解决方法是将libmbf-old源代码下载到:src/third_party/libmbfl中。继续。

cd .. 

hiphop配置已到一段落,接下来需要做的是安装2个第三方库:libevent和libCurl。

这2个包为什么需要独立出来,而不是一开始就安装呢?从接下来的安装过程中你就能得到答案:

libevent包

wget http://www.monkey.org/~provos/libevent-1.4.13-stable.tar.gz

tar -xzvf libevent-1.4.13-stable.tar.gz 

cd libevent-1.4.13-stable

cp ../hiphop-php/src/third_party/libevent.fb-changes.diff .

patch -p0 < libevent.fb-changes.diff

这里需要说明的是:-p0 这个参数和官方安装教程不一样,官方用的是 -p1,patch过程中出错的可以都试试。patch过程非常重要,不能出一点差错,否则后续工作将无法进行,即使安装上了,后面安装hiphop时也会抛出该包不是hiphop版本的错误。

./configure --prefix=$CMAKE_PREFIX_PATH

CMAKE_PREFIX_PATH这个变量在第二步操作中有定义。

make

make install 

cd .. 

libCurl包:

wget http://curl.haxx.se/download/curl-7.20.0.tar.gz

tar -xvzf curl-7.20.0.tar.gz 

cd curl-7.20.0

cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff . 

patch -p0 < libcurl.fb-changes.diff 

./configure --prefix=$CMAKE_PREFIX_PATH 

make && make install 

cd ..
 

接下来进入正题,安装hiphop,该过程非常简单:

cd hiphop-php

cmake .

make

一旦cmake过程中出现错误,下次在使用cmake的时候将会从出现错误的地方开始检查,一旦你想从头开始检查的话,可以先删除目录下CMakeCache.txt文件,然后再编译。

到当前为止,hiphop已安装完毕,现在做一个简单测试,以检查是否安装成功。

新建test.php

<?php  
echo 'hello world';  
?> 

/home/user/hiphop-php/src/hphp/hphp test.php --keep-tempdir=1 --log=3 

一旦log没有错误的话,说明已经把php转化成了c++程序,这时候在tmp目录下会生成一个hphp打头的文件夹,里面有一个program文件,执行就会在控制台输出:hello world.

就本机而言,经过上面的步骤已成功安装hiphop,各位读者请根据自己环境做出相应调整,希望大家在观察这篇文章后能一次成功。