@@ -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