#swift #linux #macos #arm #executable
Вопрос:
Я создал приложение командной строки в Swift. Когда я запускаю исполняемый продукт, который он создает на моем Mac, все в порядке, и он работает так, как ожидалось. Но когда я копирую исполняемый файл на свою машину Linux, он не работает и выдает следующую ошибку:
-sh: ./script: cannot execute binary file: Exec format error
Я предполагаю, что это как-то связано с различием в приемлемых исполняемых форматах между двумя машинами, но не уверен. И если это правда, я не уверен, как создать исполняемый продукт в формате, который сможет работать на моей машине Linux.
Вот подробная информация о моей машине с Linux:
Operating System: FSLC Wayland 3.1 (dunfell)
Kernel: Linux 5.4.85 gedb81d8afdfe
Architecture: arm64
Как я могу это исправить, чтобы исполняемый файл работал на моей машине с Linux?
Комментарии:
1. Ваши подозрения верны, исполняемые форматы, используемые macOS ( Mach-O ) и Linux ( ELF ), полностью несовместимы.
2. @Alexander вы знаете, есть ли способ создать исполняемый файл в формате файла Linux в качестве продукта для приложения командной строки Swift?
3. Я понятия не имею.
4. Вы захотите изучить перекрестную компиляцию. Я не уверен, в каком состоянии находится Swift на данный момент, но эта тема может помочь: forums.swift.org/t/cross-compiling-macos-to-linux/34003