есть ли что-то как .dll или .so, но межплатформенный?
.
Это не ясно, что вы спрашиваете, но если вы спрашиваете «Как я могу сделать динамически загружать библиотеки C / C ++ в кроссплатной платформе», - затем ответ GNU Libtool . Он имеет поддержку для построения и потребления их, а также функции поддержки выполнения
Универсальный исполняемый формат? Нет.
Это вся причина существования виртуальных машин (Java) или IL (.NET) - поэтому тот же исходный код может быть скомпилирован на универсальный промежуточный язык, который может быть выполнен в рамках ниже. Системный Bytecode без программиста, имеющего различия между системами.
На практике ВМ должен быть последовательно реализован на всех платформах.
Java .Class файлы и архивов .jar выполнят это требование, как пройдет сборки .NET.
Не для C / C ++ AFAIK, Java имеет файлы .jar, которые являются как аналогичные, хотя.
Как упоминали другие, не совсем. Возможно, LLVM однажды преодолеет этот разрыв, позволив нам взглянуть на эквиваленты LLVM так же, как мы делаем статические/динамические библиотеки объектов.
Взгляните на этот ответ по некоторым из причин, почему статические библиотеки объектов обычно не переносятся. Я говорю обычно, потому что иногда -- если производители ОС достаточно заботятся -- это возможно -- как freebsd исполняющий linux двоичные файлы, или WINE реализующий большую часть win32.