Есть ли способ создать двоичный файл, который будет работать на многих форматах исполняемых файлов (например, Mach-O и ELF)? Даже если это просто файл, который содержит и то, и другое, и работает правильно, я хотел бы сделать исполняемый файл, который работает как на Linux, так и на Mac.
1 ответ
Краткий ответ: нет, потому что каждый двоичный формат начинается с определенной последовательности ("магического числа"), которая идентифицирует формат. Двоичные файлы ELF начинаются с 0x7F 45 4C 46, двоичные файлы Mach-O с 0xFE ED FA CE или 0xCE FA ED FE (в зависимости от порядка байтов) и двоичные файлы Mach-O с 0xCA FE BA BE. Поскольку двоичный файл не может начинаться с более чем одного из них, он не может быть действительным в нескольких форматах.
Теперь можно сделать что-то более хитрое, например, создать скрипт оболочки-обертки, который каким-то образом убеждает загрузчиков выполнить часть себя ... Но это выходит за рамки моей компетенции (и будет зависеть не только от двоичных форматов, которые вы пытаетесь загрузить, но и от ОС, на которые вы пытаетесь их загрузить ...)