你好,我正在研究C编程。
我想知道Linux和OSX在C中是否有区别?我知道Windows和Linux/Unix之间有一些(比如获得系统时间戳)。是否有任何特定的命令或技术不能发挥这两种方法之一?“基本”程序应该在这两种程序上运行吗?
我知道C不是一种交叉编译语言,但是OSX和Linux都是Unix --不是吗?
发布于 2013-10-16 20:26:19
改变的不是语言本身,而是库(以及相关的API调用)。Mac和Linux在这方面没有区别,只要您坚持使用标准的POSIX调用。Linux和Mac都是符合POSIX的系统。
当然,当谈到专有的Apple库时,您不能期望在Linux下找到它们。但这是另一个问题。Linux内部设备也是如此。
请注意,我们讨论的是源代码兼容性,而不是二进制兼容性。您根本不需要修改源代码,但是您必须为每个平台分别编译它。
发布于 2013-10-16 21:09:41
Linux在Linux和达尔文遵循的基本POSIX标准上包含了相当多的扩展(Linux是“标准”,因为它与Linux完全一样)。正如Stefano所指出的,在许多情况下,这是很好的,但是如果您的程序是为Linux编写的,而不考虑可移植性(“运行在Ubuntu和SuSE上”并不是“可移植性”),您应该会看到一些不同的行为和缺少的扩展。例如,mremap()和pipe2()是Linux特有的函数.SOCK_NONBLOCK是socket()的一个特定于Linux的标志,手册页通常会在“符合”一节中指示特定于Linux的内容。
https://stackoverflow.com/questions/19413115
复制相似问题