我的最终目标是编写可以在 Unix 操作系统上运行的程序。我知道有很多 Unix 版本,但目前不知道我需要支持哪一个。我现在无法安装任何 Unix 操作系统。我唯一能做的就是尽可能使用接近Unix的免费操作系统。FreeBSD 是一个不错的选择吗?我知道还有 OpenBSD,可能还有别的东西。
附加信息:编程语言是 C++,我使用的是 GCC,还有一些可移植的库:Boost 和 wxWidgets。
OpenBSD、FreeBSD、DragonFlyBSD、NetBSD、Open Solaris 等都是开放和免费的 Unix 操作系统,你不能比这更接近。
为了规避安装限制,可以考虑使用 Sun 的Virtual box之类的工具进行虚拟化。
根据您的程序的功能、编写的语言等,您可以在任何平台上编写可移植代码。例如,我经常将我用 C++ 编写的一个应用程序从我开发它的 Windows 移植到 Linux,只做了一个小的改动(我删除了 ODBC 支持)。所以选择操作系统来进行开发并不重要——有意识地编写可移植的代码才是。
请参阅单一 UNIX 规范。如果您只做出 OpenGroup 在其单一 UNIX 规范中提供的手册页中给出的假设,那么您的代码应该可以在所有 UNIX 兼容的操作系统上运行。
如果您使用我的开发/编码搜索引擎,它会严重偏向来自单一 UNIX 规范的来源,并且单击“单一 UNIX 规范”会将搜索限制为该来源。只要您将自己限制在规范的保证范围内,它就应该适用于所有 UNIX 变体。
我还应该指出,如果您进一步限制自己仅使用 ISO C++ 标准、Boost C++ 库和 WxWidgets 提供的功能,那么您应该不仅可以针对 UNIX 的所有变体,还可以针对 Windows也是。但是,如果您只需要以 UNIX 为目标,那么单一 UNIX 规范中指定的任何系统接口都应该可以安全使用。
在开发环境方面,我建议您在VirtualBox中安装Ubuntu Linux的副本,因为在该特定 Linux 发行版上设置工作开发环境就像一次调用一样简单,并且 Linux 实际上符合UNIX。单个命令足以在安装了 WxWidgets 和 Boost C++ 库的 Ubuntu 上获得一个完全正常工作的 C++ 开发环境。sudo apt-get install
sudo apt-get install build-essential pkg-config g++ automake autoconf cmake doxygen libboost1.40-dev libwxgtk2.8-dev
查看POSIX标准。它是大多数类 Unix 操作系统都支持的可移植 API。
你在写什么程序,你用什么语言?无论您使用 FreeBSD 还是 Solaris 等,您都可以使用 C++/Python/Perl 等编写相当可移植的代码。这些编程语言可以在不同的平台上工作,我认为您不会遇到重大问题。
上面提到的大多数系统都(有限)支持运行 linux 二进制文件。您可以尝试构建和分发 linux 二进制文件。如果你在 RHEL4 之类的东西上构建它,它们中的大多数会支持必要的 ABI 来运行程序。
例如,大多数 BSD 上的 flashplugin 实际上是一个 linux-flashplugin。