TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.0 KiB
68 lines
2.0 KiB
<blog>
|
|
|
|
# 快速开始
|
|
|
|
本章给出一个最小可编译示例,以及常用命令。完整的用户手册在独立的 `aot/docs` 仓库,这里聚焦「能在 5 分钟内跑起来」。
|
|
|
|
Sources: [docs/QUICKSTART.md](docs/QUICKSTART.md) · [README.md](README.md#L7-L26)
|
|
|
|
## 安装依赖
|
|
|
|
```bash
|
|
composer install # 安装 nikic/php-parser, phpx 等
|
|
php bin/tpc.php --help # 验证安装
|
|
```
|
|
|
|
Linux 还需高精度数学库:`sudo apt install libgmp-dev libmpfr-dev libmpdec-dev`。
|
|
|
|
Sources: [README.md](README.md#L29-L40)
|
|
|
|
## 写一个最小程序
|
|
|
|
可执行代码必须放在 `main()` 里,类/函数/常量可在全局定义:
|
|
|
|
```php
|
|
<?php
|
|
class Calculator {
|
|
public function add(int $a, int $b): int { return $a + $b; }
|
|
}
|
|
function main(): void {
|
|
$c = new Calculator();
|
|
echo $c->add(5, 3) . PHP_EOL;
|
|
}
|
|
```
|
|
|
|
编译并运行:
|
|
|
|
```bash
|
|
php bin/tpc.php main.php -o myapp
|
|
./myapp # 输出 8
|
|
```
|
|
|
|
Sources: [docs/QUICKSTART.md](docs/QUICKSTART.md#L166-L189) · [docs/QUICKSTART.md](docs/QUICKSTART.md#L99-L127)
|
|
|
|
## 常用命令
|
|
|
|
| 命令 | 作用 |
|
|
|---|---|
|
|
| `php bin/tpc.php hello.php -O2` | 指定优化级别编译 |
|
|
| `php bin/tpc.php src/ -o app -j4` | 目录编译 + 4 路并行 |
|
|
| `php bin/tpc.php src/ --dry --build-dir /tmp/b` | 只生成 C++ 不编译(调试用) |
|
|
| `php bin/tpc.php app.php -r -O2 -- --flag1 v1` | 编译后直接运行,并传参 |
|
|
| `php bin/tpc.php project.yml` | 用 `project.yml` 配置编译 |
|
|
|
|
Sources: [src/Translator.php](src/Translator.php#L225-L258) · [docs/QUICKSTART.md](docs/QUICKSTART.md#L271-L280)
|
|
|
|
## 调试中间产物
|
|
|
|
`--dry` 会把生成的 `.cc` / `_arginfo.h` 写入 `--build-dir` 指定的目录,便于检查翻译结果;`--no-progress` 则逐文件打印进度。
|
|
|
|
Sources: [src/Translator.php](src/Translator.php#L30-L36)
|
|
|
|
## 下一步
|
|
|
|
- 了解产物形态差异 → [编译模式](compilation-modes)
|
|
- 理解 `project.yml` 字段 → 见仓库根 `project.yml` 与 `docs/COMPILER_CLI.md`
|
|
- 排查「Not implemented」→ [不支持的 PHP 特性](incompatible-features)
|
|
|
|
</blog>
|
|
|