Windows XP 2002 for the Itanium: 释放的怒火
Windows XP ia64 构建 2600 的辉煌。这是令人 excited 的消息,有一个 Qemu 的分支有可行的 Itanium Merced 模拟,并且它足以运行 Windows XP/2003!进入 Malte Kuhlmann 的 Qemu 分支,来自 syunnPC 的 AI Itanium 注入 Qemu 分支。我相信在某个时刻会有某种合并。像往常一样,当事情有趣时,进展速度十分快。无论如何,我在构建这个过程中遇到了令人难以置信的问题。我应该把可以运行 Alph64 Windows 的 Qemu Alpha 的步骤写下来!……然而我没有,因此我有点丢失了(希望是暂时的)所需的配方。相反,我又回到了我的 Mac mini,当然 macOS 足够 UNIX 到可以实用,但又足够主流以拥有真正的应用程序。部分原因是我想构建固件,因为我有一种感觉这是一些重要的“锁步”东西我错过了。构建交叉编译器对我或这个博客来说并不算新。事实上,目前我从其他各种项目得到了两个:jsteve@Jasons-Mac-mini gcc % /usr/local/os2/bin/i386-pc-linux-gnuaout-gcc -v 从 /usr/local/os2/lib/gcc-lib/i386-pc-linux-gnuaout/2.8.1/specs 读取规格 gcc 版本 2.8.1 jsteve@Jasons-Mac-mini gcc % /usr/local/i586-linux2/bin/i586-linux-gcc -v 从 /usr/local/i586-linux2/lib/gcc-lib/i586-linux/2.8.1/specs 读取规格 gcc 版本 2.8.1 由于 GCC 2.8.1 似乎可以“正常”运行作为 macOS arm64 二进制文件以交叉编译到 i386……但这不是这里讨论的。由于这是一个“现代”构建,因此没有任何奇怪的操作。事情顺利完成。惊人,我知道。显然,对多年后的人来说,这将不再成立。Binutils 无需多说,只是使用了 binutils 2.46.0,并且它已开箱即用配置/构建。不错。 ../binutils-2.46.0/configure --target=ia64-linux-gnu --prefix=/usr/local/ia64-linux-gnu GCC 这有点怪,因为 Itanium 并不是一个即将消亡的平台,而是一个非常死的平台。尽管得力于一名用户,René Rebe 保持火焰活着,我选择使用提到的版本 15 来看看它是否仍然有效。剧透,它有效!在 macOS 上构建还意味着我确实安装了 homebrew,这样我就可以不费劲地构建那么多依赖关系,而只需为 GCC 构建依赖关系。这确实让配置变得更加复杂。 ../gcc-15.3.0/configure \ --target=ia64-linux-gnu \ --prefix=/usr/local/ia64-linux-gnu \ --disable-bootstrap \ --disable-multilib \ --enable-languages=c \ --with-gmp=/opt/homebrew \ --with-mpfr=/opt/homebrew \ --with-mpc=/opt/homebrew \ CPPFLAGS="-I/opt/homebrew/include" \ LDFLAGS="-L/opt/homebrew/lib" 有一些奇怪的重复定义的 fdopen 导致构建失败,感谢 zlib。我知道这是怎么回事。在 ../../gcc-15.3.0/zlib/zutil.c:10 中包含的文件:在 ../../gcc-15.3.0/zlib/gzguts.h:21 中包含的文件:在 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h:61 中包含的文件:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/_stdio.h:322:7: 错误:预期')' 322 | FILE *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, _... | ^ ../../gcc-15.3.0/zlib/zutil.h:140:33: 注意:从宏 'fdopen' 中扩展 140 | # define fdopen(fd,mode) NULL /* 无 fdopen() */ 解决方法当然是注释掉 zutil.h 的第 140 行。在那之后,它会大多构建(记得将 binutils 二进制文件添加到你的路径中!export PATH=/usr/local/ia64-linux-gnu/bin:$PATH)。它将抱怨缺少 pthread,因为它想构建所有 Linux 的东西,但我们不在乎。在 ../../../gcc-15.3.0/libgcc/gthr.h:157 中包含的文件,../../../gcc-15.3.0/libgcc/libgcov-interface.c:27 中包含的文件:./gthr-default.h:35:10: 致命错误:pthread.h:没有那个文件或目录 35 | #include <pthread.h> | ^~~~~~~~~~~ 编译终止。然而我确实需要手动复制 libgcc.a。cp ia64-linux-gnu/libgcc/libgcc.a /usr/local/ia64-linux-gnu/ia64-linux-gnu/lib/libgcc.a'。然后,只需 cd 到 gcc 目录并运行 make install。就这样,我现在有了一个 Itanium 交叉编译器,可以构建固件!jsteve@Jasons-Mac-mini gcc % /usr/local/ia64-linux-gnu/bin/ia64-linux-gnu-gcc -v 使用内置规格。COLLECT_GCC=/usr/local/ia64-linux-gnu/bin/ia64-linux-gnu-gcc COLLECT_LTO_WRAPPER=/usr/local/ia64-linux-gnu/libexec/gcc/ia64-linux-gnu/15.3.0/lto-wrapper 目标:ia64-linux-gnu 配置:../gcc-15.3.0/configure --target=ia64-linux-gnu --prefix=/usr/local/ia64-linux-gnu --disable-bootstrap --disable-multilib --enable-languages=c --with-gmp=/opt/homebrew --with-mpfr=/opt/homebrew --with-mpc=/opt/homebrew CPPFLAGS=-I/opt/homebrew/include LDFLAGS=-L/opt/homebrew/lib 线程模型:posix 支持的 LTO 压缩算法:zlib gcc 版本 15.3.0 (GCC) 真不错!Qemu 我过去肯定用 Homebrew 安装过一些依赖,但我会被该死的,如果我确切知道是什么。首先获取源代码(截至此时,2026年7月31日) git clone --branch merced --single-branch https://github.com/makuhlmann/qemu-system-ia64.git
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡