Ошибка формата exec при выполнении файла во встроенном устройстве из telnet
У меня есть встроенное устройство, которое состоит из 32-разрядного процессора ARM-7 Winbond и ОС uClinux. У меня Windows 7 64-битная машина. Я установил Virtual Box для Ubuntu для компиляции программы, а также для загрузки ее через FTP-сервер. файл во встроенном устройстве выполняется с сервера telnet. Устройство имеет собственный файл vdi, но не может открыть образ в виртуальной коробке, поэтому я устанавливаю Ubuntu в Virtual Box.
Проблемы:
Когда я компилирую программу и загружаю в устройство через ftp, при выполнении файла из telnet он не запускает программу и показывает "Ошибка формата Exec". Таким образом, я отладил исполняемый файл, он показывает "обнаружен разрыв стека". Как это решить?
Когда я копирую пример кода из Windows в Ubuntu с сервера на виртуальной машине и загружаю программу в устройство через ftp, она не выполняется. И то же самое, что я сделал с Windows 7, я загрузил пример кода в устройство через Windows FTP, программа выполняется. Почему это происходит?
1 ответ
Вы не можете запустить программу, созданную для другой архитектуры. Ваше приложение разработано для 64-разрядной архитектуры x86, и вы пытаетесь запустить его на 32-разрядном ARM. Необходимо выполнить кросс-компиляцию программы для данной архитектуры.
Здесь вы можете прочитать о кросс-компиляции: