我想让我的 Fedora Linux 能够执行以下操作:
使用Linux作为完整的开发平台,无需安装任何其他操作系统,但仍然可以在不同平台下构建和测试程序。
完全替代 Windows 机器进行所有其他工作,例如 Office、画图、远程桌面等。
您能否建议实现上述目标的开源项目和工具?
答案1
定义“平台”。即使可以使用交叉编译在 Linux 上构建软件,如果不实际运行这些操作系统,您也无法合理地测试在 Windows 或 Mac 上使用的软件。对于在其他操作系统上进行实际测试,VMware 是一个很棒的工具。
你问题的第二部分可能应该是一个完全独立的问题。但是你可以使用 OpenOffice.org 或 Google Docs 来替代 MS Office,Pinta 或 GIMP 或其他任何东西来替代 Paint,VNC 或 Empathy+Vinagre 来替代远程桌面等。
如果您提供一些更具体的用例,会更容易回答这些问题。
答案2
无论您是系统程序员、Web 开发人员还是桌面应用程序开发人员,您都可以轻松进行跨平台开发。如果您对系统感兴趣,那么您为 Linux 编写的任何实用程序和/或驱动程序都可能适用于其他 *nix,只需进行很少的修改。如果您编写标准 C 代码并且不使用太多系统特定调用,它们甚至可能很容易移植到 Windows。
如果您是桌面应用程序开发人员,则可以将 GTK、QT 或 wxWidgets 作为目标,并且您的应用程序很可能可以在当今的三大主要平台(*nix、Windows、Mac)上很好地运行。同样,将系统特定调用保持在最低限度,或将它们隔离到系统特定的包装器库中。您还可以将虚拟机(如 JVM 和/或 CLR)作为目标,这将允许应用程序全面运行。
如果您是一名网络开发人员,那么您可能会遇到太多不同的选择。我更喜欢一个名为的小型网络服务器切罗基我开发并运行 ASP.NET(单声道)和在其上运行并使用 PgSQL 后端的 Django 应用程序。
因此,结论是,如果您可以在目标平台上编译代码,并且在编写代码时或者您的目标是虚拟机时牢记这一点,那么 Linux 中的跨平台开发是可以完成的。另一点是你可能会遇到选择的悖论并且不知道该使用什么。为此,请阅读下面我对第二个问题的回答。
关于第二个问题,我找到的最好的资源叫做开源替代品。该网站列出了商业软件及其开源替代品。几乎所有替代方案都可以在 Linux 和 FreeBSD 上运行。
答案3
Weeeeeeel,#1 真是太棒了,先生。我不知道有什么办法可以实现这个目标。可以交叉编译到其他 *nixes (有点头疼)在您的开发盒上,但是如果没有适当的操作系统和架构,您应该如何运行该代码呢?有广泛的尝试系统仿真在那里,但最终这是一个障碍。如果您想在操作系统/架构上测试软件,请在该操作系统/架构上运行它!
另一方面,现在有一些工具可以让您轻松地在各种配置中构建相同的项目。 编译器可能是最知名且经过充分测试的。至少这将帮助您在其他系统上测试您的项目,或鼓励其他人为您这样做。
老实说,我很确定这在其他操作系统上也是不可能的。
#2 更容易
等等。我会提供更多帮助,但你的问题敏锐度急剧下降。
答案4
单一开发应该能够帮助您掌握开发方面的知识:
MonoDevelop 是一个主要为 C# 和其他 .NET 语言设计的 IDE。 MonoDevelop 使开发人员能够快速编写桌面和 ASP.NET Web 应用程序Linux, 视窗和苹果电脑。 MonoDevelop 使开发人员可以轻松地将使用 Visual Studio 创建的 .NET 应用程序移植到 Linux,并为所有平台维护单一代码库。
(重点是我的)