用C编程 - Linux和OSX之间的差异

时间:2013-10-16 20:23:47

标签: c linux macos unix cross-platform

您好我正在研究C编程。

我想知道C和Linux中的Linux和OSX之间是否存在差异?我知道Windows和Linux / Unix之间有一些(比如获取系统时间戳)。是否有任何特定的命令或技术不适用于其中之一? “基本”程序应该同时运行吗?

我知道C不是交叉编译语言,但OSX和Linux都是Unix - 不是吗?

2 个答案:

答案 0 :(得分:8)

语言本身和库(以及相关的API调用)不是什么变化。只要您坚持使用标准POSIX调用,在这方面Mac OSX和Linux之间没有区别。 Linux和Mac OSX都是符合POSIX标准的系统。

当然,在谈论专有的Apple库时,你不能指望在Linux下找到它们。但这是另一个问题。 Linux内部相同。

请注意,我们讨论的是兼容性,而不是二进制兼容性。您根本不必修改源代码,但必须分别为每个平台编译它。

答案 1 :(得分:2)

Linux包含了Linux和Darwin遵循的基本POSIX标准的相当多的扩展(Linux是“标准”,因为它与Linux完全相同)。正如Stefano指出的那样,在很多情况下这很好,但是如果你有一个为Linux编写的程序而不考虑可移植性(“在Ubuntu和SuSE上运行”不是“可移植性”),你应该会看到一些不同的行为和遗漏的扩展。例如,mremap()pipe2()是特定于Linux的功能。 SOCK_NONBLOCKsocket()等特定于Linux的标志。手册页通常会在“符合要求”部分中指明特定于Linux的内容。