自己在开发一些程序时,需要使用PHP V8js扩展,其实在Github上已经有详细的文档了,不过为了方便多服务器环境一致,在此做一下记录

yum install -y curl git python
cd /tmp

# Install depot_tools first (needed for source checkout)
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
export PATH=`pwd`/depot_tools:"$PATH"

# Download v8 这一步很慢,需要耐心等待
fetch v8
cd v8

# (optional) If you'd like to build a certain version:7.9.326.1
git checkout 7.5.288.30
gclient sync

# Setup GN
tools/dev/v8gen.py -vv x64.release -- is_component_build=true use_custom_libcxx=false

# Build
ninja -C out.gn/x64.release/

# Install to /opt/v8/
sudo mkdir -p /opt/v8/{lib,include}
sudo cp out.gn/x64.release/lib*.so out.gn/x64.release/*_blob.bin \
  out.gn/x64.release/icudtl.dat /opt/v8/lib/
sudo cp -R include/* /opt/v8/include/
cd /tmp
git clone https://github.com/phpv8/v8js.git
cd v8js
phpize
./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" --with-php-config=/www/server/php/72/bin/php-config
make
make test
sudo make install

最后修改服务器上php.ini的配置文件 ,添加上extension=v8js.so即可。

Github参考:https://github.com/phpv8/v8js/blob/php7/README.Linux.md

Windows可以使用Phpstudy,然后下载别人编译好的版本,放在PHP目录后在Phpstudy中启用此版本即可:https://www.apachelounge.com/viewtopic.php?t=6359

在部分环境下,需要解决`GLIBC_2.18′ not found和`GLIBCXX_3.4.21′ not found的问题。

cd /tmp
wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.18.tar.gz
tar -xzvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make -j4 && make install

cd /tmp
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
tar -xzvf gcc-7.5.0.tar.gz
cd gcc-7.5.0
./contrib/download_prerequisites
mkdir build && cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4 && make install

find / -name "libstdc++.so*"
cp /tmp/gcc-7.5.0/build/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.24 /usr/lib64

cd /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.24 libstdc++.so.6

strings /usr/lib64/libstdc++.so.6 | grep GLIBC