AMD64 имеет различные соглашения о вызовах в Linux и Windows, но представьте, если бы они были одинаковыми, возможно ли иметь общий код среди них?Предполагая, что соглашение о вызове AMD64 будет стандартным, Windows и Linux могут использовать общий код?
Я знаю, что существует разница между COFF и ELF, и такие вещи, как разделяемые библиотеки, различны (GOT vs независимо от того, что делает Windows), и имена функций, конечно, также различны.
Запрет на все это может быть возможно? Например, ARM имеет такое же соглашение как для Windows, так и для Linux.
Зависит от того, что вы подразумеваете под «общим кодом». У них может быть одинаковый исходный код C/C++ относительно легко, но им будет сложно разделить двоичный код из-за разных исполняемых форматов. Трудность совместного использования одного и того же исходного кода сборки находится где-то посередине. –
Даже с разным стандартным соглашением вы можете катиться самостоятельно, если вам не нужно взаимодействовать с другим кодом. – Jester
Если Windows и Linux были более похожими, то они не были бы Windows и Linux. Трудно понять, насколько вы готовы растянуть гипотезы, но ясно, что они гипотетичны или лучше говорят противоречиво. Если у вас есть вопрос, можете ли вы делиться двоичными файлами между двумя ОС, если они достаточно похожи, то да: можно запустить некоторые BSD-файлы в Linux и наоборот, если они не полагаются на расширения стандартной библиотеки. – rici