2

我正在学习 Objective-C,我的朋友有一个真正的 Macintosh IIci,它使用 Mac System 7(特别是带有 68k 处理器的 7.5.5)并且我已经安装了 Metrowerks C/C++ IDE(我认为它是版本 1,但我不知道),但我没有测试它,然后我想知道一件事:可以使用 NSObjects/Objects 和 AppKit 或类似的东西在 Objective-C 中开发吗?谢谢。

4

4 回答 4

5

简短的回答:没有。

Objective-C 成为 Mac 开发与 OS X 一起使用的通用语言,在计算机出货 10 年后进入测试版。大多数前 OS X 系统的开发都是使用 C 或 C++ 完成的。

如果没有 OS X,您将没有任何系统库或头文件可链接,Metrowerks 编译器将不了解 Objective-C 语法或 C 的运行时扩展。

最重要的是,Objective-C 框架是为 PowerPC(或现在的 Intel)mac 构建的,而该机器中的处理器使用较旧的 68k 架构。

于 2009-10-27T23:06:05.057 回答
5

正如斯蒂芬所说,简短的回答是否定的。但是,只是为了好玩,我开始考虑你必须做什么才能真正做到这一点。

1) 你必须让 gcc 在 68k 上运行(gcc 是说 Objective-C 的编译器;你可以用 llvm 代替 gcc,但我们不要疯狂)。这绝非易事。快速浏览最新的 gcc 版本并没有显示该平台的任何内容(不足为奇)。我不是 gcc 方面的专家,但我敢打赌它使用了 gcc 特定的扩展和现代 C,所以让它与现有的 68k 编译器一起编译可能是不可行的。

所以第一步是为 gcc 添加一个 68k 的后端。这将允许 gcc 吐出将在 68k 上运行的代码。然后,您可以使用支持 68k 的 x86 构建的 gcc 来交叉编译一个新的 gcc 二进制文件,该二进制文件将在您的旧 Mac 上实际运行。

以前从未搞过 gcc,我怀疑这项任务将花费我大约两三年的时间。也许更多。但是,这并非不可能。

2) 一旦你有了可以在 68k 机器上运行的现代版本的 gcc,你就可以用它来交叉编译 x86 或 PPC。(由于您在谈论 AppKit,您将永远无法在旧计算机上实际运行任何这些程序。所有测试都必须在更现代的机器上进行。)您现在必须获取所有库和来自目标机器(PPC 或 x86 Mac)的 Cocoa/Foundation/AppKit/libc/etc 的标头,并将它们放在 68k 上的 gcc 可以找到的位置。这可能需要花费 6 个月的时间来完善。但同样,这不应该是不可能的。

不过,这可能不合法。据我所知,OS X(包含 Cocoa)和 Xcode 的许可协议不允许您将这些二进制文件随意移动到您想要的任何机器上。在这样做之前,您需要与一位称职的律师交谈,因为没有人愿意接受国际刑警组织的访问。

3)我认为你已经完成了。你可以在你的 Mac IIci 上编写 Objective-C/Cocoa 代码,为 PPC 或 x86 Mac 编译它,使用你最喜欢的方法将它运送到 OS X 机器上(我从 2005 年开始只是一个 Mac 人,所以我不这样做'甚至不知道 IIci 上的连接选项),并且相当痛苦地对其进行测试和调试。

此时,您可以访问在 PPC 或 x86 芯片上运行 OS X 的 Mac。你会想知道为什么你不只是在这台机器上做所有的开发。而且由于您已经花费了几年时间来设置您的 IIci 开发环境,因此购买旧的 PPC Mac 进行开发会很便宜

不过,这可能是一个有趣的想法。如果你把它拉过来,它可能会让你登上 reddit 的首页。(不过,老实说,如果这就是你所追求的,那么为 YouTube 伪造它会更容易。)

于 2009-10-28T13:29:10.113 回答
1

在 20 年代初,gcc 仍在为 68k Amiga 编译,因此可能有机会让它在 68k Mac OS 上运行。我相信,至少从 90 年代初开始,gcc 就可以使用 Objective C 扩展。

另一种选择是使用 68k Linux。有一个 68k 的 Debian 4.0 (etch) 端口,目前正在努力恢复它,因此您可能会运行一个相当新的 gcc 版本。

还有可能交叉编译。

同时代的 C 环境(不知道是否有支持 Objective C)是 Think C(后来的 Symantec C++)和 Apple 的 Macintosh Programmers Workshop。理论上,您可能会得到其中之一来编译目标 C 支持版本的 gcc。

于 2013-03-23T10:58:46.090 回答
0

不,据我所知,他们不可能太老了。

于 2009-10-27T23:05:43.293 回答