Это означает, что скомпилированный двоичный файл содержит инструкцию (возможно, более одной инструкции), которая недопустима в архитектуре, в которой вы ее выполняете.
Вы можете запустить свой двоичный файл под gdb
, чтобы узнать конкретную инструкцию:
gdb ./precompiled
(gdb) run
(gdb) bt
(gdb) disassemble
Затем введите run
, а затем, если он не работает, запустите bt
(backtrace), чтобы увидетьгде это не удается.Используйте disassemble
, чтобы увидеть конкретную инструкцию, которая вызывает сбой.
Не так много вы можете сделать, чтобы исправить это.Вы можете отредактировать двоичный файл, разобрав его, отредактировав сборку и снова скомпилировав ее в двоичный файл.Учитывая, что у вас есть исходный код, проще перекомпилировать на целевой машине.
Вы можете избежать определенных инструкций (при компиляции на другой машине - где вы скомпилировали precompiled
двоичный файл)с помощью переключателей компилятора на основе вашей целевой архитектуры.