2 回答

TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊
POSIX聲明符號常量_SC_*
在unistd.h
標(biāo)頭中定義:
該
unistd.h
標(biāo)題應(yīng)當(dāng)載明下列符號常量sysconf()
:[...]_SC_MONOTONIC_CLOCK
但是,它沒有定義這種符號常量的值是什么-它對您的應(yīng)用程序并不重要(并且您不應(yīng)該依賴于該值)。
例如,GNU C庫將所有這些都列出在enum
;中。而newlib定義了顯式值。OpenBSD和NetBSD也使用顯式但不同的值。

TA貢獻(xiàn)1777條經(jīng)驗 獲得超10個贊
目的是弄清楚這與pynexj和其他對此感到困惑的人的可移植性之間的關(guān)系。
該常量_SC_MONOTONIC_CLOCK
由C庫定義,并且如果C庫支持多種體系結(jié)構(gòu),則常量可能因體系結(jié)構(gòu)而異。
在具有相同硬件體系結(jié)構(gòu)的所有Linux發(fā)行版上,都使用相同或二進(jìn)制兼容的C庫。(在這種情況下,二進(jìn)制兼容意味著所有這些C庫_SC_MONOTONIC_CLOCK
在相同的硬件體系結(jié)構(gòu)上定義相同的值。)
這意味著,如果滿足其他依賴項(例如已安裝/可用的動態(tài)庫),則在某些Linux發(fā)行版中為某些Linux架構(gòu)編譯的代碼將在同一架構(gòu)上的其他Linux發(fā)行版中工作。
在源代碼級別,需要針對每種體系結(jié)構(gòu)和操作系統(tǒng)分別編譯代碼。使用相同庫名稱和位置的Linux發(fā)行版可以運行相同的二進(jìn)制文件(如果安裝了必要的動態(tài)庫),因為它們的C庫可以是相同的,也可以是二進(jìn)制兼容的。
其他一些操作系統(tǒng)具有兼容性層,以公開用于運行Linux二進(jìn)制文件的Linux二進(jìn)制兼容接口。它們可以運行某些/大多數(shù)/所有Linux二進(jìn)制文件,具體取決于該兼容層的綜合程度。這與在Linux中使用Wine來運行Windows二進(jìn)制文件非常相似。
有某些怪異的C庫實現(xiàn),并且可能有一些制造商使用修改/修補的代碼偽造的“發(fā)行版”,它們與二進(jìn)制不兼容。我只在嵌入式設(shè)備(特別是那些缺少MMU或內(nèi)存管理單元,因此不支持虛擬內(nèi)存的設(shè)備)上看到這些,但是在臺式機(jī),服務(wù)器或筆記本電腦上卻沒有看到。
添加回答
舉報