我从未有过Apple电脑。有一段时间,我在笔记本电脑上运行Ubuntu,并在D2中编写了许多程序代码。所有这些都是终端应用程序,没有GUI。
现在我打算买一台Macbook,但我不确定我的程序是否会在OSX上按预期运行。我无法测试它,但我想如果我安装FreeBSD并在其上编译我的代码,也许它也将在OSX上编译。有没有人有这方面的经验或知识?因为我主要是为Linux服务器编写程序,如果OSX会让我陷入困境,我可能会开始考虑使用普通的笔记本电脑。
P.S。如果有人问,我讨厌Linux上的图形应用程序,我想要OSX,所以我既可以运行Photoshop等,也可以本地运行和编译我的程序。
P.S。在许多情况下,使用Phobos库或POSIX代码。但是可以访问/ etc,/ var文件夹进行文件访问。也使用共享内存和Unix套接字。
答案 0 :(得分:2)
如果你的软件在两个不同的UNIX平台上编译,它的机会确实很好,它也会在第三个上编译。但是如果没有在Mac OS X上进行测试,你就不会有任何特定的问题。
<强>目录强>
为了使您的应用程序更具可移植性,您确实应该考虑每个OS存储在其他地方的配置文件。例如,Ubuntu使用/ etc,FreeBSD使用/ usr / local / etc,Mac OS X使用/ private / etc(但提供/ etc的符号链接)。
使用/ var更具普遍性。
网络强>
对于UNIX套接字,代码类似。如果你有TCP的东西,一方面Linux和FreeBSD以及另一方面的Mac OS X之间存在一些细微的差别,比如tcp6连接只能在ipv6上监听,或者在ipv4和ipv6上监听。但一般来说,这一切都很好并兼容。
共享内存
共享内存通常取决于外部库。实际上,这是一个真正依赖操作系统的领域。但据我所知http://www.cs.cf.ac.uk/Dave/C/node27.html,这是由D处理的,所以你不应该感到困扰。
另一种策略
一个好的策略可能是创建一个虚拟机来测试你的代码是否直接在Mac OS X上编译。
http://lifehacker.com/5938332/how-to-run-mac-os-x-on-any-windows-pc-using-virtualbox提供了一个解决方案,而https://askubuntu.com/questions/303725/virtualbox-how-to-install-os-x-guest-under-ubuntu-host似乎也支持应该适用于Ubuntu的想法。
由于Apple EULA限制在Apple生产的计算机上安装Mac OS X,因此涉及法律问题。由于合同不能违反当地法律,因此该条款在各个司法管辖区的可执行性问题是公开的。
答案 1 :(得分:1)
现在我打算买一台Macbook,但我不确定我的程序是否会在OSX上按预期运行。
除非您的程序使用特定于操作系统的功能(例如,它们导入core.sys.freebsd.*
或core.sys.linux.*
),否则D程序应该可以在任何平台上运行。 (不能保证,但很可能。)在你的情况下,它更有可能,因为Linux,FreeBSD和OS X都兼容POSIX。