Это расширенный комментарий к ответу Желудя , слишком длинный, чтобы поместиться в комментарии. Намерение состоит в том, чтобы уточнить, как это связано с переносимостью к pynexj и другим, кто озадачен этим.
Константа _SC_MONOTONIC_CLOCK
определяется библиотекой C и может отличаться в зависимости от архитектуры, если библиотека C поддерживает несколько архитектур.
Во всех дистрибутивах Linux на одной и той же аппаратной архитектуре используется одна и та же или двоичная совместимая библиотека C. (Бинарная совместимость в этом контексте означает, что все эти библиотеки C определяют одинаковое значение для _SC_MONOTONIC_CLOCK
на одинаковых аппаратных архитектурах.)
Это означает, что код, скомпилированный для некоторой архитектуры Linux в каком-либо дистрибутиве Linux, будет работать в других дистрибутивах Linux на той же архитектуре, если выполняются другие зависимости (например, установлены / доступны динамические библиотеки).
На исходном уровне код необходимо компилировать отдельно для каждой архитектуры и операционной системы. В дистрибутивах Linux, использующих одинаковые имена и расположения библиотек, могут работать одни и те же двоичные файлы (если установлены необходимые динамические библиотеки), поскольку их библиотеки C будут либо одинаковыми, либо двоичными.
Некоторые другие ОС имеют уровни совместимости, чтобы предоставить двоичный интерфейс, совместимый с Linux, для запуска двоичных файлов Linux. Они могут запускать некоторые / большинство / все двоичные файлы Linux, в зависимости от того, насколько всеобъемлющим этот уровень совместимости. Это очень похоже на то, как Wine можно использовать для запуска двоичных файлов Windows в Linux.
Существуют определенные реализации библиотек C для странного шарика, и, возможно, некоторые «дистрибутивы», размеченные производителем, с использованием модифицированного / исправленного кода, которые не являются двоично-совместимыми. Я видел их только на встроенных устройствах (особенно на тех, у которых нет MMU или блока управления памятью и, следовательно, они не поддерживают виртуальную память), но не на настольных компьютерах, серверах или ноутбуках.