Как показать сообщение об ошибке, если я случайно запустил двоичный файл x86 на ARM? - PullRequest
1 голос
/ 15 октября 2019

В моем проекте мы создаем приложение для работы в Linux как на x86, так и на ARM. Случайно я запустил двоичный файл x86 на ARM и, к моему удивлению, запустил двоичный файл - вроде. Он записал один из строковых литералов в stdout и сразу же завершился с segfault.

Не было показано значимого сообщения в виде строк "Этот двоичный файл не может быть запущен на этой платформе", что я предполагал, что произойдет.

Возможно ли технически настроить мой компилятор / компоновщик / что-нибудь таким образом, чтобы выходной двоичный файл вообще не запускался, если запущен на неправильной архитектуре? Или что будет отображаться какое-то значимое сообщение?

1 Ответ

1 голос
/ 16 октября 2019

То, что вы хотите, это: FatELF .

Поскольку это на самом деле не поддерживается, вы можете написать сценарий оболочки, поместить туда содержимое вашего исполняемого файла (в кодировке base64) инаписать правильный исполняемый файл для правильной архитектуры в / tmp, и если архитектура не поддерживается, вы можете отобразить сообщение об ошибке.

Таким образом, у вас будет один исполняемый файл для всех платформ Unix / Linux / Mac для всех процессорных архитектур, без какой-либо зависимости от пользователя, принимающего (неправильное) решение.

...