How to build HHVM 3.22 master trunk on CentOS 7
HHVM 3.20, 3.21 and 3.22 are still faster than PHP 7.2 especially with many connections under load, however as of October 2017 there still are no official pre-compiled HHVM packages for CentOS 7.x so we need to revisit how to build it by hand, which is not too difficult, just takes most servers awhile to assemble
There are instructions on the HHVM wiki for CentOS7 but they are a year out of date now.
The process is straightforward, first we need to not only make sure we have all the libraries we need but also the development libraries and most recently a newer version of the GCC compiler, we will use GCC 6.3 found in the official SCL Devtoolset-6 for CentOS 7 (trusted because it is built by Redhat/CentOS)
yum install centos-release-scl devtoolset-6 scl-utils cmake3 make git psmisc ocaml gperf enca \ {binutils,boost,jemalloc,numactl,unixODBC,expat,mariadb,pam,fastlz,double-conversion,re2,fribidi,libc-client,glib2}-devel \ {glog,oniguruma,libjpeg-turbo,openssl,ImageMagick,sqlite,tbb,bzip2,openldap,readline,elfutils-libelf,gmp,lz4,pcre}-devel \ lib{xslt,event,yaml,vpx,png,zip,icu,mcrypt,memcached,cap,dwarf,edit,curl,xml2,xslt}-devel
now you need to move into your temporary directory, either /tmp or /temp and copy the newest HHVM into it
cd /tmp git clone https://github.com/facebook/hhvm -b master hhvm --recursive ### optionally "-b master" could be "-b HHVM-3.21" if you wanted a branch cd hhvm
then we enable the newer GCC without disturbing the rest of your system, we no longer use ./configure but instead the newer cmake3 and compile HHVM
scl enable devtoolset-6 bash cmake3 . -DCMAKE_C_FLAGS="-O2 -pipe -march=native" -DCMAKE_CXX_FLAGS="-O2 -pipe -march=native" -DCMAKE_ASM_FLAGS="-O2 -pipe -march=native" -DCMAKE_BUILD_TYPE="Release" time ionice -c2 -n7 nice -n19 make -j7 ./hphp/hhvm/hhvm --version make install hhvm --version exit
the flags are forced on the cmake line, I use O2 instead of O3 because it reduces compiling time from like 2 hours to “only” an hour, the “-j7” on the make line is to try to use more cpu threads when available, try your CPU count +1 and I use ionice and nice to try to make it give priority to other things going on in the system since it is such a resource hog
an hour, or two, later you should have success and “make install” puts it into place – you need a service script to start/stop hhvm but that is beyond the scope of this help and available on the official wiki anyway
the “exit” on the end is to escape out of the SCL shell which is what gives you the newer GCC compiler and returns you to the regular system
Leave a comment