Можно ли скомпилировать статические библиотеки, не основанные на стандартной библиотеке C, в одной ОС, а затем переместить в другую?
Теоретически;да.Обратите внимание, что компилятор - это всего лишь то, что преобразует основной язык (например, C) во вторичный язык (например, может быть нативный код для конкретной ОС и конкретного ЦП), но может быть также исходный код BASIC или исходный код веб-сборки или какой-то переносимыйбайт-код или что-либо еще).
Единственное, что действительно имеет значение, это то, что любой, кто использует вторичный язык, понимает вторичный язык.
На практике;для статических библиотек вспомогательный язык включает в себя такие вещи, как форматы объектных файлов и соглашения о вызовах;и «все, что использует вторичный язык, понимает вторичный язык» включает в себя понимание формата объектного файла, понимание соглашений о вызовах и т. д. Обычно компиляторы настроены так, что их вторичный язык соответствует тому, что имеет смысл для компьютера, на котором работает компилятор, и потому чтоиз этого часто вы не можете скомпилировать статическую библиотеку на одном компьютере и перенести ее на другой компьютер (с другим компилятором и / или ОС и / или процессором).
Однако «типичный» не означаетнеобходимость.Кросс-компиляторы вполне возможны.
Например, вы можете портировать GCC (и его инструменты - компоновщик и т. Д.) На Windows и использовать свой кросс-компилятор для создания статических библиотек, которые могут использоваться компилятором, предназначенным для(и работает на) Linux;и если вы сделаете это, вы, вероятно, не сможете использовать кросс-компилятор (работающий в Windows) для создания статических библиотек для других компиляторов, также работающих в Windows.