-
Notifications
You must be signed in to change notification settings - Fork 0
Building and installing HHVM on Ubuntu 12.04
Using sudo or as root user: (you may have to run sudo apt-get update
first)
sudo apt-get install git-core cmake g++ libboost1.48-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 automake libtool libcurl4-openssl-dev libboost-regex1.48-dev libboost-system1.48-dev \
libboost-program-options1.48-dev libboost-filesystem1.48-dev libboost-thread1.48-dev \
wget memcached libreadline-dev libncurses-dev libmemcached-dev libbz2-dev \
libc-client2007e-dev php5-mcrypt php5-imagick libgoogle-perftools-dev \
libcloog-ppl0 libelf-dev libdwarf-dev subversion python-software-properties
HHVM requires gcc >= 4.7.0, but Ubuntu 12.04 only ships with 4.6. To get a more recent version, follow these steps:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.7 g++-4.7
Then make gcc-4.7 the default compiler by updating the alternates db:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 \
--slave /usr/bin/g++ g++ /usr/bin/g++-4.7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 40 \
--slave /usr/bin/g++ g++ /usr/bin/g++-4.6
sudo update-alternatives --set gcc /usr/bin/gcc-4.7
mkdir dev
cd dev
git clone git://github.com/facebook/hhvm.git
cd hhvm
git submodule init
export CMAKE_PREFIX_PATH=`pwd`/..
export HPHP_HOME=`pwd`
cd ..
git clone git://github.com/libevent/libevent.git
cd libevent
git checkout release-1.4.14b-stable
cat ../hhvm/hphp/third_party/libevent-1.4.14.fb-changes.diff | patch -p1
./autogen.sh
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..
Make sure that your system time is correct, otherwise ./configure will fail.
git clone git://github.com/bagder/curl.git
cd curl
./buildconf
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..
Note: If you're building a version of cURL older than 7.28.0 (for whatever reason), you'll need to apply the patch in src/third_party to update it prior to the make step.
cat ../hhvm/hphp/third_party/libcurl-7.22.1.fb-changes.diff | patch -p1
svn checkout http://google-glog.googlecode.com/svn/trunk/ google-glog
cd google-glog
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..
wget http://www.canonware.com/download/jemalloc/jemalloc-3.0.0.tar.bz2
tar xjvf jemalloc-3.0.0.tar.bz2
cd jemalloc-3.0.0
./configure --prefix=$CMAKE_PREFIX_PATH
make
make install
cd ..
cd hhvm
git submodule update
export HPHP_HOME=`pwd`
cmake .
make
The hhvm binary can be found in hphp/hhvm/hhvm
.
If any errors occur, it may be required to remove the CMakeCache.txt
file in the checkout.
If your failure was on the make
command, try to correct the error and run make
again, it should restart from the point it stops.
If CMake is complaining about libicu/ICU then you may need to build ICU manually before cmake
will run:
wget http://download.icu-project.org/files/icu4c/52.1/icu4c-52_1-src.tgz
tar -xzvf icu4c-52_1-src.tgz
cd icu/source
./configure --prefix=$CMAKE_PREFIX_PATH
make
sudo make install
Then delete the CMakeCache.txt
file in the hhvm directory if it exists to get a clean CMake run.