静态编译 PHP 8 系列、PHP7.4 、PHP7.3
静态编译PHP运行时
文档说明: 只记录关键的地方; 发布时间: 2023-08-07
环境: alpine:3.17 docker clang
状态: 已完成
备注:
macos 环境下不需要启动容器环境,直接构建即可 (支持 macos 环境下构建)
php 7.4 、7.3 分支需要单独克隆 ( 区别: openss 使用 v1 版本, curl 库 不启用http2库 http3库 )
复用 swoole-cli 编写好的静态依赖库 和 编译流程
构建步骤:
git clone -b build_native_php https://github.com/swoole/swoole-cli.git cd swoole-cli # 启用 alpine:3.17 容器环境 (docker pull alpine:3.17) bash sapi/quickstart/linux/run-alpine-container.sh # 进入容器 bash sapi/quickstart/linux/connection-swoole-cli-alpine.sh # 准备基础运行环境 sh sapi/quickstart/linux/alpine-init.sh --mirror china # 准备PHP 运行时 (看提示,把 PHP 运行时导入环境变量PATH ) sh setup-php-runtime.sh --mirror china # 生成构建脚本 (这一步最好准备代理) composer update php prepare.php +inotify +apcu +ds +xlswriter +ssh2 +pgsql +pdo_pgsql \ --with-swoole-pgsql=1 --with-libavif=1 \ --with-php-version=8.1.20 \ --with-build-type=release \ --with-http-proxy=http://192.168.3.26:8015 \ --with-c-compiler=clang \ --with-install-library-cached=1 # 静态编译 编译依赖库(生成静态依赖库) bash make.sh all-library # 静态编译 PHP 预处理 bash make.sh config # 静态编译PHP (编译、汇编、链接) bash make.sh build # 静态编译PHP (打包) bash make.sh archive
更换 PHP 版本
# php 8.2.7 --with-php-version=8.2.7 # php 8.1.21 --with-php-version=8.1.21 # php 7.4.33 --with-php-version=7.4.33
构建php7.4 7.3 版本需要特别处理之处(更换分支即可)
php 7.4 、7.3 分支需要单独克隆
( 区别: openss 使用 v1 版本, curl 库 不启用http2库 http3库 ,GD 库因libXpm编译失败,默认未启用)
除了更换分支,构建步骤仍然如上
# php 7.4 git clone -b build_php_7.4 https://github.com/jingjingxyk/swoole-cli/ # php 7.3 git clone -b build_php_7.3 https://github.com/jingjingxyk/swoole-cli/
复用已经编译好的依赖库
(把构建好的依赖库打包到容器中,就可以分发了,缩减构建时间)
bash sapi/quickstart/linux/run-alpine-container.sh # 把构建步骤中这一步变更为: bash sapi/quickstart/linux/run-alpine-container-full.sh
生成扩展依赖图
# 生成 ext-dependency-graph.graphviz.dot 文件 php prepare.php +inotify +apcu +ds +xlswriter +ssh2 +pgsql +pdo_pgsql \ --with-swoole-pgsql=1 --with-libavif=1 \ --with-dependency-graph=1 --with-skip-download=1 --without-docker=1 \ # 生成PDF 、svg 、webp 格式的文件 sh sapi/extension-dependency-graph/generate-dependency-graph.sh # 生成的依赖图文件位于 bin/ext-dependency-graph.pdf bin/ext-dependency-graph.svg bin/ext-dependency-graph.webp
体验构建结果
参考文档
- PHP 原生构建选项文档
- swoole-cli
- 静态编译PHP 运行时
- 静态编译PHP 运行时构建 实践
- swoole-cli编译步骤 main 分支
- swoole-cli 添加扩展 模板例子、静态库构建模板例子
- swoole-cli编译步骤 main 分支
- 添加扩展例子模板源文件
- 添加静态链接库模板源文件
- 从 PHP 7.4.x 升级到到 PHP 8.0.x 变更
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库