Skip to content

Commit 8435f90

Browse files
committed
docs(plan): qemu-x86 五条腿全绿,以及第七、第八条发现
⭐ 五宿主矩阵全绿,而这是在**任何东西被发布之前**拿到的。linux-x64 真正引导了 multiboot 探针(SeaBIOS 起来、镜像打印 qemu-x86 probe ok);另外四条按设计回落成只核 --version,并各自发出一条 ##[notice] 说明这台宿主的链接器发不出 x86 ELF。 第七条:meson install --no-rebuild 会停在 install 要拷的第一个**生成**文件上。改为 显式组装载荷(模拟器 + pc-bios + ldd 实测出的 13 个 MinGW DLL)—— 这也正是 316MB 那条发现说载荷该做的事。 第八条:引导探针的门槛问错了问题 —— 它检查有没有 32 位编译器,而真正必须成功的是 **链接**。Windows 上编译器通过、链接倒下。 ⚠️ 而我差点把这条修复读成一次「假绿」:检查各腿是否真的引导时,我 grep 的那串字 **同时出现在被回显的脚本里**,于是五条腿全被读成「跳过」。换成 GitHub 真正发出的 ##[notice] 注解之后,真相是一条引导、四条按设计回落。**同一个形状:grep 匹配到的是 脚本而不是结果。**
1 parent da9525c commit 8435f90

1 file changed

Lines changed: 18 additions & 3 deletions

File tree

.agents/docs/2026-08-21-freestanding-outstanding-four.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -602,9 +602,11 @@ QEMU 可以从源码构建,而且**只构建需要的目标**能把代价压下
602602
**阶段 2:在一个临时 PR 的 CI 上,用 Actions 构建其余四个宿主。**
603603
**⇒ 已开始:`mcpplibs/qemu-x86`**
604604

605-
> 仓库只含跨宿主构建工作流,不含描述符、不含二进制、不做镜像上传。截至本次修订
606-
> **linux x64 / linux arm64 / darwin arm64 三条腿绿**(x64 那条还引导了 multiboot
607-
> 探针并断言了打印),darwin x64 绿,win32 x64 仍在迭代。
605+
> 仓库只含跨宿主构建工作流,不含描述符、不含二进制、不做镜像上传。
606+
> **⭐ 五条腿全绿。** `linux-x64` 真正引导了 multiboot 探针(SeaBIOS 起来、镜像打印
607+
> `qemu-x86 probe ok`);另外四条按设计回落成只核 `--version`,并各自发出一条
608+
> `##[notice]` 说明**这台宿主的链接器发不出 x86 ELF**。这是收录门槛所要求的那件事,
609+
> 而它是在任何东西被发布之前拿到的。
608610
609611
**这一步的价值已经兑现:六条只有真跑才会出现的发现,而每一条都是「已发布却装不上」
610612
的成因。** 它们在这里只是红叉。
@@ -618,6 +620,19 @@ QEMU 可以从源码构建,而且**只构建需要的目标**能把代价压下
618620
| 5 | win32 | MSYS2 的 Python **不自带 pip**(单独的包)。我默认了它在场 |
619621
| 6 | win32 | `ninja` 会连**单元测试**一起构建,而 `test-vmstate.exe` 在 MinGW 下链接不了(`undefined reference to qemu_ftruncate64`)—— 2032 个目标里已经编好 1897 个。⭐ 只构建模拟器目标而不是给测试打补丁,是更小的主张 |
620622

623+
### 4.3.0 ⚠️ 第七条与第八条:失败的是探针,不是模拟器
624+
625+
| # | 宿主 | 发现 |
626+
|---|---|---|
627+
| 7 | win32 | 只构建模拟器目标之后,`meson install --no-rebuild` 停在 `ERROR: File 'trace/trace-events-all' could not be found` —— 那是 install 要拷的**生成**文件。点名它只会停在下一个;去掉 `--no-rebuild` 会重建全部、把链接不了的单元测试带回来。⭐ 改为**显式组装载荷**(模拟器 + `pc-bios` + 用 `ldd` 实测出的 **13 个 MinGW 运行时 DLL**),这也正是 316MB 那条发现说载荷该做的事 |
628+
| 8 | 全部 | ⚠️ **引导探针的门槛问错了问题。** 它检查有没有 32 位*编译器*,然后放链接过去 —— Windows 上前者通过(`cc -m32` 照样产出对象),链接倒下:`ld.exe: unrecognised emulation mode: elf_i386 / Supported emulations: i386pep i386pe`。改成问**链接器**认不认这个 emulation,一条检查覆盖全部宿主 |
629+
630+
⚠️ **而我差点把这条修复读成一次「假绿」。** 检查各腿是否真的引导时,我 grep 了
631+
`::notice::this host's linker emits no x86 ELF` —— 那串字**同时出现在被回显的脚本里**,
632+
于是五条腿全被读成「跳过」,包括确实引导了的 `linux-x64`。判据换成 GitHub 真正发出的
633+
`##[notice]` 注解(脚本回显里不会有)之后,真相是:一条引导、四条按设计回落。
634+
**同一个形状:grep 匹配到的是脚本而不是结果。**
635+
621636
### 4.3.1 ⚠️ 体积:strip 回答的比预期少得多
622637

623638
实测于 linux-x64:

0 commit comments

Comments
 (0)