Есть ли способ создать файл foo, который работает как foo.elf в Linux и foo.macho в OSX
Да, есть: архив оболочки .
По сути, вы создаете крошечную программу-оболочку, которая решает, запустить ли foo.elf
или foo.macho
, а затем вызывает эту программу после извлечения ее во временный каталог.Обе нативные исполняемые файлы могут храниться, например, в сжатом zip-файле, поэтому издержки на доставку неиспользуемого двоичного файла могут быть сведены к минимуму.
Может быть, с помощью некоторых хитрых приемов, чтобы сделать файл совместимым с обоими форматами?
Это невозможно (как правильно объяснил Иоахим Брейтнер).