Как правило, большинство программ ссылаются на lib c, даже если они написаны на другом языке. Он обеспечивает стандартный интерфейс библиотеки C (например, MSVCRT), функции POSIX (эквивалент некоторых частей подсистемы Win32) и обертки вокруг системных вызовов. Например, Rust использует lib c, потому что он предоставляет переносимую среду для связи с *. 1001 *
Однако на Linux вы не должны ссылаться на lib c , Go выбирает выполнение системных вызовов напрямую, что означает, что он может отправлять статические c двоичные файлы, которые не имеют зависимостей времени выполнения. Это возможно, потому что Linux гарантирует стабильный ABI ядра, но не все операционные системы делают это (например, macOS). Поэтому, если у вас нет значительных ресурсов (например, всей команды по языку программирования), это, как правило, не разумный ход, если вы не работаете только с несколькими системными вызовами.
Я должен отметить, что даже Windows изначально встроен в язык C: он использует C строки (предоставленные, обычно широкие C строки) для своих системных вызовов, и большая часть ядра написана на C. Даже если вы запускаете ядро с нуля, вам все равно нужен общий интерфейс C, поскольку практически каждый язык программирования имеет способ взаимодействия с C.