ScarShow

< IS >

HipHop building on Ubuntu 11.10

最近有個專案有機會用到Facebook所提出的HipHop for PHP,它可以將PHP程式碼轉為C++並編譯成可執行檔用來加速處理效能,在這邊筆記一下安裝過程。

refrence: Building and Installing on Ubuntu 11.10

先將系統的編譯環境用apt安裝好

sudo apt-get install git-core cmake g++ libboost-dev libmysqlclient-dev libxml2-dev libmcrypt-dev libicu-dev openssl build-essential 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 memcached libreadline-dev libncurses-dev libmemcached-dev libbz2-dev libc-client2007e-dev php5-mcrypt php5-imagick libgoogle-perftools-dev libcloog-ppl0

接著從GitHub將hiphop-php clone下來

mkdir dev
cd dev
git clone git://github.com/facebook/hiphop-php.git
cd hiphop-php
export CMAKE_PREFIX_PATH=`/bin/pwd`/../
export HPHP_HOME=`/bin/pwd`
export HPHP_LIB=`/bin/pwd`/bin
cd ..

編譯第三方Libraries

libevent

wget http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
tar -xzvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
cp ../hiphop-php/src/third_party/libevent-1.4.14.fb-changes.diff .
patch -p1 < libevent-1.4.14.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

libdurl

wget http://curl.haxx.se/download/curl-7.21.2.tar.gz
tar -xvzf curl-7.21.2.tar.gz
cd curl-7.21.2
cp ../hiphop-php/src/third_party/libcurl.fb-changes.diff .
patch -p1 < libcurl.fb-changes.diff
./configure --prefix=$CMAKE_PREFIX_PATH

將以下兩的檔案用連結中的檔案置換掉

rm "$CMAKE_PREFIX_PATH"/curl-7.21.2/lib/ssluse.c
wget https://raw.github.com/bagder/curl/26b487a5d6ed9da5bc8e4a134a88d3125884b852/lib/ssluse.c -O "$CMAKE_PREFIX_PATH"/curl-7.21.2/lib/ssluse.c
rm "$HPHP_HOME"/src/runtime/ext/extension.cpp
wget https://raw.github.com/h4ck3rm1k3/hiphop-php/0628599b4b03dff6b33bc2ea31de09f236ea6452/src/runtime/ext/extension.cpp -O "$HPHP_HOME"/src/runtime/ext/extension.cpp

make
make install
cd ..

libmemcacheed

wget http://launchpad.net/libmemcached/1.0/0.49/+download/libmemcached-0.49.tar.gz
tar -xzvf libmemcached-0.49.tar.gz
cd libmemcached-0.49
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..

開始編譯hiphop-php

cd hiphop-php
git submodule init
git submodule update
cmake .
make

到這邊就算完成Hiphop的編譯了,接下來是設定環境變數,可以寫到/etc/profile, ~/.bashrc或在~/.zshrc

export HPHP_HOME=your_path/dev/hiphop-php
export HPHP_LIB=$HPHP_HOME/bin
export CMAKE_PREFIX_PATH=$HPHP_HOME/../
export PATH=$PATH:$HPHP_HOME/src/hphp:$HPHP_HOME/src/hphpi