Не удается запустить исполняемый файл, созданный Swift в Linux

#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