2 回答
TA贡献1826条经验 获得超6个赞
POSIX声明符号常量_SC_*
在unistd.h
标头中定义:
该
unistd.h
标题应当载明下列符号常量sysconf()
:[...]_SC_MONOTONIC_CLOCK
但是,它没有定义这种符号常量的值是什么-它对您的应用程序并不重要(并且您不应该依赖于该值)。
例如,GNU C库将所有这些都列出在enum
;中。而newlib定义了显式值。OpenBSD和NetBSD也使用显式但不同的值。
TA贡献1777条经验 获得超10个赞
目的是弄清楚这与pynexj和其他对此感到困惑的人的可移植性之间的关系。
该常量_SC_MONOTONIC_CLOCK
由C库定义,并且如果C库支持多种体系结构,则常量可能因体系结构而异。
在具有相同硬件体系结构的所有Linux发行版上,都使用相同或二进制兼容的C库。(在这种情况下,二进制兼容意味着所有这些C库_SC_MONOTONIC_CLOCK
在相同的硬件体系结构上定义相同的值。)
这意味着,如果满足其他依赖项(例如已安装/可用的动态库),则在某些Linux发行版中为某些Linux架构编译的代码将在同一架构上的其他Linux发行版中工作。
在源代码级别,需要针对每种体系结构和操作系统分别编译代码。使用相同库名称和位置的Linux发行版可以运行相同的二进制文件(如果安装了必要的动态库),因为它们的C库可以是相同的,也可以是二进制兼容的。
其他一些操作系统具有兼容性层,以公开用于运行Linux二进制文件的Linux二进制兼容接口。它们可以运行某些/大多数/所有Linux二进制文件,具体取决于该兼容层的综合程度。这与在Linux中使用Wine来运行Windows二进制文件非常相似。
有某些怪异的C库实现,并且可能有一些制造商使用修改/修补的代码伪造的“发行版”,它们与二进制不兼容。我只在嵌入式设备(特别是那些缺少MMU或内存管理单元,因此不支持虚拟内存的设备)上看到这些,但是在台式机,服务器或笔记本电脑上却没有看到。
- 2 回答
- 0 关注
- 305 浏览
添加回答
举报