yaojiu 发表于 2020-7-9 20:41:35

宝塔面板PHP7.2安装编译php-v8js扩展的教程

本帖最后由 yaojiu 于 2023-5-5 20:31 编辑

1.安装依赖
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
2.构建最新的C ++编译器
您可以使用检查当前版本。如果有gcc -v在运行,最低版本8.3.0
sudo yum install bzip2
cd /usr/local/src
wget http://d1.cmdtz.com/dll/gcc-8.3.0.tar.gz
tar zxf gcc-8.3.0.tar.gz
cd gcc-8.3.0/
./contrib/download_prerequisites
./configure --disable-multilib --enable-languages=c,c++
make
sudo make install
export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64
3.安装V8
# 添加 depot_tools
cd /usr/local
git clone https://chromium.googlesource.com/chromium/tools/depot_tools
export PATH=`pwd`/depot_tools:"$PATH"
# 拉取 v8
cd /usr/local/src
fetch v8
cd v8
git checkout 7.5.288.23 # v8_版本号
gclient sync
./build/install-build-deps.sh
gn gen out.gn/library --args='use_custom_libcxx=false is_component_build=true is_debug=false target_cpu="x64" use_goma=false goma_dir="None" v8_enable_backtrace=true v8_enable_disassembler=true v8_enable_object_print=true v8_enable_verify_heap=true'
ninja -C out.gn/library libv8.so# 移动文件至 /opt/v8
sudo mkdir -p /opt/v8/{lib,include}
sudo cp -v out.gn/library/lib*.so out.gn/library/*_blob.bin out.gn/library/icudtl.dat /opt/v8/lib/
sudo cp -vR include/* /opt/v8/include/# 更新库
sudo ldconfig2:安装v8js-2.1.1
wget https://pecl.php.net/get/v8js-2.1.1.tgz
tar -xvf v8js-2.1.1.tgzcd v8js-2.1.1phpize      #如报错,请使用   /www/server/php/72/bin/phpize./configure --with-php-config=/www/server/php/72/bin/php-config --with-v8js         #注意php的目录自行更换 如果这个报错,就用下面那个
#上面那条命令报错再用这个   ./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS" --with-php-config=/www/server/php/72/bin/php-config
make && make install
3,在php7.2配置文件合适的地方加上
extension = "v8js.so"
重启PHP后查看phpinfo可以看到其中已经包含v8js扩展



guagua 发表于 2022-5-3 22:28:44

装了半天 现在马上编译提示不支持centos

深蓝 发表于 2020-10-9 21:23:12

这v8js真的太难装了。搞了一天,最后试试你的看下行不行。

深蓝 发表于 2020-10-9 23:01:59

卡在 ./build/install-build-deps.sh 这里了。
报错。
which: no lsb_release in (/usr/local/depot_tools:/sbin:/bin:/usr/sbin:/usr/bin)
ERROR: lsb_release not found in $PATH

深蓝 发表于 2020-10-10 19:22:43

装好了。最关键的问题还是gcc编译问题。

guagua 发表于 2022-5-5 16:57:10

configure: error: could not determine libv8 version
现在只能到这里了搞不好

yaojiu 发表于 2022-6-22 21:18:03

guagua 发表于 2022-5-5 16:57
configure: error: could not determine libv8 version
现在只能到这里了搞不好

已更新教程,使用倒数第三行代码就行了./configure --with-v8js=/opt/v8 LDFLAGS="-lstdc++" CPPFLAGS="-DV8_COMPRESS_POINTERS" --with-php-config=/www/server/php/72/bin/php-config

宝塔用户_dlcvbv 发表于 2024-1-15 01:25:17

深蓝 发表于 2020-10-10 19:22
装好了。最关键的问题还是gcc编译问题。

v8默认不使用gcc,可以查看ninja.build,使用的是clang

宝塔用户_dlcvbv 发表于 2024-1-15 01:32:07

guagua 发表于 2022-5-3 22:28
装了半天 现在马上编译提示不支持centos

install-build-deps.sh这个shell脚本其实只是辅助而已,它会识别你的发行版和版本,然后用包管理器安装devel开发工具,clang和c++等等,如果提示不支持,可以跳过,安装好必要的依赖就可以了,out.gn/library是编译库的目录,out/x64.release则是d8二进制主程序所用,tools/dev/gm.py只支持二者,所以可以用gn gen生成配置,具体参数gn gey --help,之后ninja -C开始编译,由于源码过于庞大,具体编译时间取决于计算机性能

宝塔用户_dlcvbv 发表于 2024-1-15 01:39:09

yaojiu 发表于 2022-6-22 21:18
已更新教程,使用倒数第三行代码就行了

CPPFLAGS和LDFLAGS可以省略,因为已经默认指定了,cat configure可以看到相应配置,只需要指定php-config和libv8就可以了,安装v8的时候,可以把库和头文件复制到/usr,就不用指定路径了,因为/usr已经在环境变量当中了,而且大多数configure的default libdir就是/usr,如果不会编译v8,那么可以使用包管理器安装,centos系的系统可以yum search v8,可以看到v8-devel,那么安装它就可以了,ubuntu为libv8-dev,我使用的是opensuse,软件源中没没v8,所以我只能编译

宝塔用户_dlcvbv 发表于 2024-1-15 01:43:54

yaojiu 发表于 2022-6-22 21:18
已更新教程,使用倒数第三行代码就行了

另外,如果使用服务器编译,而服务器性能不行的话,至少需要1小时,所以不能直接在ssh当中执行编译,可以使用tmux(也可以使用其他软件)打开一个session,在这个窗口当中完成编译,这样ssh断开后进程就不会被杀死了
页: [1]
查看完整版本: 宝塔面板PHP7.2安装编译php-v8js扩展的教程