Ответ
Итоговым файлом компиляции Kotlin Native является бинарный файл, формат которого зависит от целевой платформы:
- Linux/macOS:
.kexe(исполняемый файл) - Windows:
.exe(исполняемый файл) - iOS/Android:
.klib(библиотека) или.framework(для iOS) - WebAssembly:
.wasm
Пример компиляции через командную строку:
kotlinc-native hello.kt -o hello
Создаст hello.kexe (на Linux/macOS) или hello.exe (на Windows). Для библиотек:
kotlinc-native mylib.kt -produce library -o mylib
Создаст mylib.klib.
Ответ 18+ 🔞
Давай разберемся, что там у тебя получается на выходе, когда ты этот Kotlin Native компилируешь. А то как будто на дворе 2002-й год и у каждого свои заморочки.
Короче, смотри. Ты написал свой код, нажал волшебную кнопку — и что? А на выходе у тебя получается бинарный файл. Но вот формат этого файла — это уже ёперный театр, он целиком и полностью зависит от того, куда ты целишься. Прямо хитрая жопа получается.
- Под Linux или macOS? Поздравляю, получишь файлик с расширением
.kexe. Самый обычный исполняемый файл, который можно запустить в терминале. Никакой виртуальной машины, ничего — чистая машинка. - Под Windows? Ну тут всё предсказуемо, будет классический
.exe. Можно хоть на рабочий стол кинуть и запустить, если, конечно, у тебя там не какая-нибудь каркалыга в коде. - Запулить это всё в iOS или Android? Тут уже не исполняемый файл, а библиотека. Для этого мира ты получишь файл
.klib. А для iOS, если хочешь красоты, можно и.frameworkсобрать. Это уже как кирпичики, из которых нативное приложение лепится. - Ну и модный WebAssembly? Получишь, ясное дело,
.wasmмодуль, который потом в браузере можно запускать. Пизда рулю, будущее наступило.
Теперь, как это всё на практике выглядит. Открываешь ты свой терминал, и пишешь что-то типа:
kotlinc-native hello.kt -o hello
И всё, волнение ебать! Компилятор подумает и выдаст тебе, в зависимости от системы, либо hello.kexe, либо hello.exe. Запустил — и сидишь, радуешься.
А если тебе нужна не программа, а именно библиотека (тот самый .klib), чтобы другие проекты твой гениальный код использовали, то команда будет уже другая:
kotlinc-native mylib.kt -produce library -o mylib
На выходе — mylib.klib. Можешь теперь этим файлом, как кирпичом, в другие нативные проекты швыряться. В общем, не так страшен чёрт, как его малюют. Главное — понять, что под каждую платформу свой костыль, простите, свой бинарник.