Skip to content

Building and installing HHVM on CentOS 6.6

Wael AlNahari edited this page Nov 16, 2015 · 95 revisions

sudo yum install gcc-c++ libgcc glibc-devel libgcc.i686 glibc-devel.i686 binutils gzip bzip2 make tar perl zip unzip wget

# Download GCC v5.2.0 cd /tmp wget ftp://ftp.gnu.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.gz -O gcc-current.tar.gz mkdir gcc-current sudo tar -zxvf gcc-current.tar.gz -C /tmp/gcc-current --strip-components=1

#Download Support Libraries: GMP, MPFR, MPC, ISL, CLOOG

### gmp cd /tmp/gcc-current && sudo wget https://gmplib.org/download/gmp-6.1.0/gmp-6.1.0.tar.bz2 -O gmp-current.tar.bz2 && \ sudo mkdir gmp && sudo tar -jxvf gmp-current.tar.bz2 -C /tmp/gcc-current/gmp --strip-components=1

### mpfr cd /tmp/gcc-current && sudo wget http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.3.tar.bz2 -O mpfr-current.tar.bz2 && \ sudo mkdir mpfr && sudo tar -jxvf mpfr-current.tar.bz2 -C /tmp/gcc-current/mpfr --strip-components=1

### mpc cd /tmp/gcc-current && sudo wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz -O mpc-current.tar.gz && \ sudo mkdir mpc && sudo tar -zxvf mpc-current.tar.gz -C /tmp/gcc-current/mpc --strip-components=1

### isl cd /tmp/gcc-current && sudo wget ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/infrastructure/isl-0.15.tar.bz2 -O isl-current.tar.bz2 && \ sudo mkdir isl && sudo tar -jxvf isl-current.tar.bz2 -C /tmp/gcc-current/isl --strip-components=1

### cloog cd /tmp/gcc-current && sudo wget http://bastoul.net/cloog/pages/download/cloog-0.18.4.tar.gz -O cloog-current.tar.gz && \ sudo mkdir cloog && sudo tar -zxvf cloog-current.tar.gz -C /tmp/gcc-current/cloog --strip-components=1

#compiler gcc yum install -y gcc sudo mkdir /tmp/gcc-build && cd /tmp/gcc-build sudo ../gcc-current/configure --enable-languages=c,c++,fortran --enable-multilib --prefix=/usr/local/gcc sudo make sudo make install

# Move Old GCC and Replace With New Version yum remove -y gcc gcc-c++ cpp

sudo mv /usr/bin/g++ /usr/bin/g++_old sudo mv /usr/bin/c++ /usr/bin/c++_old

sudo ln -s -f /usr/local/gcc/bin/gcc /usr/bin/gcc sudo ln -s -f /usr/local/gcc/bin/g++ /usr/bin/g++ sudo ln -s -f /usr/local/gcc/bin/c++ /usr/bin/c++ sudo ln -s -f /usr/local/gcc/bin/cpp /usr/bin/cpp sudo ln -s -f /usr/local/gcc/bin/gfortran /usr/bin/gfortran sudo ln -s -f /usr/local/gcc/bin/gcov /usr/bin/gcov

sudo cp /usr/local/gcc/lib64/libstdc++.so.6.0.20 /usr/lib64/. sudo mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak sudo ln -s -f /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6

# Install Dependencies sudo yum install -y -q git svn autoconf automake patch memcached cmake wget mysql-devel mysql-server pcre-devel gd-devel libxml2-devel expat-devel libicu-devel bzip2-devel oniguruma-devel openldap-devel readline-devel libc-client-devel libcap-devel binutils-devel pam-devel elfutils-libelf-devel libxslt-devel libevent-devel libcurl-devel libmcrypt-devel tbb-devel ncurses-devel python-devel gperf gmp-devel

#Install libtool cd /tmp && \ wget http://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz -O libtool-current.tar.gz > /dev/null 2>&1

mkdir libtool-current && tar -zxvf libtool-current.tar.gz -C /tmp/libtool-current --strip-components=1 > /dev/null 2>&1 && \ cd libtool-current

./configure && make && sudo make install

#Install Newer version of libcurl (Needed recent version for HHVM to compile properly) rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/rhel6/x86_64/city-fan.org-release-1-13.rhel6.noarch.rpm yum install -y libcurl

#Get HHVM cd /usr/local sudo git clone git://github.com/facebook/hhvm.git --depth=1 cd hhvm export CMAKE_PREFIX_PATH=/usr/local

# Get CMake cd /tmp && \ wget https://cmake.org/files/v3.4/cmake-3.4.0.tar.gz -O cmake-current.tar.gz

# Untar CMake mkdir cmake-current && \ tar -zxvf cmake-current.tar.gz -C /tmp/cmake-current --strip-components=1 && \ cd cmake-current

# Install CMake ./configure --prefix=$CMAKE_PREFIX_PATH sed -i '1 s/$/-ltinfo/' Source/CMakeFiles/cmake.dir/link.txt make sudo make install

# Export CMake Path for current session export PATH=/usr/local/cmake/bin:$PATH

# (Optional) Add CMake Path for following sessions (using Bash in this case) sed -i '/export PATH/i PATH=$PATH:/usr/local/cmake/bin' ~/.bash_profile

# Get Boost cd /tmp && \ wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download -O boost-current.tar.gz

# Untar Boost mkdir boost-current && tar -zxvf boost-current.tar.gz -C /tmp/boost-current --strip-components=1 && \ cd boost-current

# Install Boost sudo ./bootstrap.sh --prefix=/usr/local/boost sudo ./b2 --layout=system install

# Export Boost PATH for current session export PATH=/usr/local/boost/include:$PATH export PATH=/usr/local/boost/lib:$PATH

# (Optional) Add Boost Path for following sessions (using Bash in this case) sed -i '/export PATH/i PATH=$PATH:/usr/local/boost/include' ~/.bash_profile sed -i '/export PATH/i PATH=$PATH:/usr/local/boost/lib' ~/.bash_profile

# Get Google Glog cd /tmp && \ wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz -O glog-current.tar.gz

# Untar Google Glog mkdir glog-current && tar -zxvf glog-current.tar.gz -C /tmp/glog-current --strip-components=1 && \ cd glog-current

svn checkout http://google-glog.googlecode.com/svn/trunk/ google-glog && \ cd google-glog

# Install Google Glog ./configure --prefix=$CMAKE_PREFIX_PATH make sudo make install

# Get Libmemcached cd /tmp && \ wget http://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz -O libmemcached-current.tar.gz

# Untar Libmemcached mkdir libmemcached-current && tar -zxvf libmemcached-current.tar.gz -C /tmp/libmemcached-current --strip-components=1 && \ cd libmemcached-current

# Install Libmemcached ./configure --prefix=$CMAKE_PREFIX_PATH make sudo make install

# Get JEMalloc cd /tmp && \ wget http://www.canonware.com/download/jemalloc/jemalloc-4.0.4.tar.bz2 -O jemalloc-current.tar.gz

# Untar JEMalloc mkdir jemalloc-current && tar -xjvf jemalloc-current.tar.gz -C /tmp/jemalloc-current --strip-components=1 && \ cd jemalloc-current

# Install JEMalloc ./configure --prefix=$CMAKE_PREFIX_PATH make sudo make install

# Get SQLite cd /tmp && \ wget http://ftp.osuosl.org/pub/blfs/conglomeration/sqlite/sqlite-autoconf-3090200.tar.gz -O sqlite-current.tar.gz

# Untar SQLite mkdir sqlite-current && tar -zxvf sqlite-current.tar.gz -C /tmp/sqlite-current --strip-components=1 && \ cd sqlite-current

# Install SQLite ./configure --prefix=$CMAKE_PREFIX_PATH make sudo make install

# Get TBB cd /tmp && \ wget https://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb44_20150728oss_src.tgz -O tbb-current.tar.gz

# Untar TBB mkdir tbb-current && tar -zxvf tbb-current.tar.gz -C /tmp/tbb-current --strip-components=1 && \ cd tbb-current

# Install TBB make

sudo mkdir -p /usr/include/serial sudo cp -a include/serial/* /usr/include/serial/

sudo mkdir -p /usr/include/tbb sudo cp -a include/tbb/* /usr/include/tbb/

sudo cp build/linux_intel64_gcc_cc4.9.2_libc2.12_kernel2.6.32_release/libtbb.so.2 /usr/lib64/ sudo ln -s /usr/lib64/libtbb.so.2 /usr/lib64/libtbb.so

# Get Libdwarf cd /tmp && \ wget http://www.prevanders.net/libdwarf-20140413.tar.gz -O libdwarf-current.tar.gz

# Untar Libdwarf mkdir libdwarf-current && tar -zxvf libdwarf-current.tar.gz -C /tmp/libdwarf-current --strip-components=1 && \ cd libdwarf-current

# Install Libdwarf ./configure --prefix=$CMAKE_PREFIX_PATH make

sudo cp libdwarf/libdwarf.a /usr/lib64/ sudo cp libdwarf/libdwarf.h /usr/include/ sudo cp libdwarf/dwarf.h /usr/include/

# Get Ocaml cd /tmp && \ wget http://caml.inria.fr/pub/distrib/ocaml-4.02/ocaml-4.02.2.tar.gz -O ocaml-current.tar.gz

# Untar OCaml mkdir ocaml-current && tar -zxvf ocaml-current.tar.gz -C /tmp/ocaml-current --strip-components=1 && \ cd ocaml-current

# Install OCaml (will install in /usr/local) ./configure sudo make world.opt sudo make install sudo make clean

# Would be great to avoid that... sudo ln -s /usr/local/bin/ocamlbuild /usr/bin/ocamlbuild sudo ln -s /usr/local/bin/ocamlopt /usr/bin/ocamlopt

# Get [Image Magick](http://www.imagemagick.org/) cd /tmp && \ wget http://www.imagemagick.org/download/ImageMagick.tar.gz -O ImageMagick-current.tar.gz

mkdir ImageMagick-current && tar -zxvf ImageMagick-current.tar.gz -C /tmp/ImageMagick-current --strip-components=1 > /dev/null 2>&1 && \ cd ImageMagick-current

sudo mkdir -p /usr/local/imageMagick ./configure make sudo make install

#Install HHVM cd /usr/local/hhvm

# For list of submodules, cat /usr/local/hhvm/.gitmodules # which leads to https://github.com/hhvm/hhvm-third-party sudo git submodule update --init --recursive sudo cmake . sudo sed -i -e 's/$/..\/..\/..\/lib\/libmemcached.so/g' hphp/hhvm/CMakeFiles/hhvm.dir/link.txt sudo make

# Export HHVM Path for current session export PATH=/usr/local/hhvm/hphp/hhvm:$PATH

# Add HHVM Path for following sessions (using Bash in this case) sed -i '/export PATH/i PATH=$PATH:/usr/local/hhvm/hphp/hhvm' ~/.bash_profile

cd /usr/local/hhvm/hphp/doc/man && sudo mkdir man1 sudo find . -maxdepth 1 -type f -exec mv {} man1/ \; sed -i '/export MANPATH/i MANPATH=$MANPATH:/usr/local/hhvm/hphp/doc/man' ~/.bash_profile

cd /usr/local/hhvm/hphp/hack/man && sudo mkdir man1 sudo find . -maxdepth 1 -type f -exec mv {} man1/ \; sed -i '/export MANPATH/i MANPATH=$MANPATH:/usr/local/hhvm/hphp/hack/man' ~/.bash_profile

echo "Finished to install HHVM" hhvm --version

Clone this wiki locally