DJGPP
一个古老的、基于 GCC 的 MS-DOS 工具链 DJGPP,在 1990 年代通过它学习 C/C++ 和游戏开发的程序员中引发了强烈怀旧情绪,常常与 Allegro 这类库和 RHIDE 这样的 IDE 一起出现。评论者指出,它在当时让人们获得了 32 位开发、GNU 工具,甚至通往 Linux 本身的入口,而那时商业编译器价格高昂;同时也澄清,DJGPP 是面向 DOS 的编译器,而不是像 Cygwin 或 Wine 那样的完整 POSIX 兼容层。尽管年代久远,它仍然偶尔有人维护并用于小众场景,也成为人们回顾旧工具链、可移植性以及开发环境演进的一个切入点。
学习、怀旧与个人轨迹
- 许多评论者在 90 年代使用 DJGPP 学习了 C/C++(通常是通过经典书籍)。
- 常见模式:在 DOS 上用 DJGPP + RHIDE + Allegro 进行第一个游戏、图形和声音项目。
- 不少人描述了自己构建 2D/3D 引擎、尝试内联汇编,以及使用被淘汰的 386/486 机器。
- 对一些人来说,DJGPP 是通往 GNU 工具的入口,最终也引导他们安装 Linux(通常是通过软盘和 UMSDOS 安装的 Slackware)。
DJGPP 到底是什么
- 它被描述为一个基于 GCC 的、面向 MS‑DOS(以及 Windows 下的 DOS 窗口)的工具链,而不是 Windows 本身。
- 它支持 32 位保护模式程序和扁平内存,避免了 16 位分段限制和 8.3 文件名限制(在带 LFN 的 Windows 9x 下尤为如此)。
- 它支持标准 C/C++,但 Linux 或 POSIX 特有的功能(例如
fork)通常不可用。 - 多位发帖者强调它并不像 Wine;更接近的类比是 mingw,而不是 Cygwin。
游戏开发与 Quake
- 它广泛与 Allegro 一起用于 DOS 游戏;人们将 Allegro 更高层、面向游戏的 API 与 SDL 更底层的方式进行比较。
- 一个讨论串提到,Quake 曾在从 Watcom + DOS/4GW 切换后使用 DJGPP 构建并发布。
- 据说当时 Watcom 的代码生成更好;Quake 的性能主要取决于手工优化的汇编代码。
- DJGPP 的优势包括跨平台的 GCC、可修改性,以及与自定义 DOS 扩展器的集成。
相关工具链、语言与 16 位努力
- 提到了其他历史工具链:OS/2 上的 emx+gcc、OpenWatcom、Dev-C++、Code::Blocks。
- 现代面向 DOS 的努力包括:gcc-ia16(16 位 GCC 移植)、Free Pascal、Rust-to-DOS 演示,以及一个 JavaScript DOS 环境(DOjS)。
- 还回忆起一个 DOS JVM(JavaPC、KaffePC),以及如今很难找到它。
当前状态与持续使用
- DJGPP 仍在构建中;链接中提供了大约 18 个月前的 GCC 12.2 移植版本。
- 有人最近将它打包到了 NixOS。
- 总体情绪是强烈的喜爱与怀旧,同时也承认现代工具和操作系统更容易使用、也更强大,但 DJGPP 仍然是一个可用的、非常小众的工具链。
命名与大小写之争
- 讨论扩展到了是否“DJGPP”必须全大写、它究竟是一个词还是首字母缩略词,以及英语正字法如何处理首字母缩略词。
- 有些人坚持创作者规定的大小写;另一些人则优先考虑用户偏好和风格惯例。