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 關注
- 323 瀏覽
添加回答
舉報