【问题标题】:Differences between OS X and Linux (C/C++)OS X 和 Linux (C/C++) 之间的差异
【发布时间】:2014-03-31 10:17:25
【问题描述】:

我在学校有一门学科,我们在 Linux 下使用 C/C++ 编写代码。我们主要使用线程、信号量、进程(fork()、pipes() 等)、IPC 来开发服务器/客户端应用程序。我有一台 MacBook,我真的不想强迫它运行 Ubuntu(我们在学校使用),所以我想问我可以在 Mac 上开发,然后将代码带到 Linux 并用 g++ 编译吗?

目前我可以这样做,但我不确定将来是否会遇到问题。例如,在 Windows 下,forks 和 sockets 以完全不同的方式完成,所以我只想知道差异在哪里(OS X 与 Ubuntu),以了解我需要在 Linux 下编写特定代码。

【问题讨论】:

  • OSX 是 POSIX 兼容的,所以应该不是问题。但时间安排可能不同。
  • 为什么不在 MacBook 上的虚拟机中运行 Ubuntu? (例如使用 VirtualBox)
  • 对于 UNIX 风格的代码,它们并没有太大的不同。我建议您最初在 OS X 中开发和调试,然后最终在 Ubuntu 中的虚拟机中进行测试。
  • 感谢大家的回答!

标签: c++ c linux ipc


【解决方案1】:

OS X 基于 Unix(如 Linux)并遵循 POSIX(在某种程度上)。如果您使用 OS X 中可用的 POSIX 函数,那么在 Linux 下运行代码应该没有(或最多)问题。

但事实并非如此,因为 Linux 在更高程度上遵循 POSIX 并且(几乎)符合最新的 POSIX 标准,而 OS X 不支持较新的版本。此外,GNU 对 POSIX 工具和库有许多扩展,这些扩展在 OS X 上可能不可用。

简而言之,在 Linux 下,您可以使用更多最新且功能丰富的库。但是,在 OS X 中发现的 POSIX 的旧功能在 Linux 中也可用。所以一般来说应该没有问题,只要你坚持标准的行为。

【讨论】:

    【解决方案2】:

    两者都是类 UNIX 环境。因此,只要您的代码遵循POSIX 标准,您就不会遇到麻烦。但是,我强烈建议您在开发的不同阶段在 Ubuntu 上测试您的代码。但是,不要期望在 Linux 下找到 Apple 库调用(反之亦然)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-25
      • 2020-10-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多