Как исправить «невозможно выполнить двоичный файл: ошибка формата Exec» в Ubuntu 18.04 x86-64 Target

Убунту 18

В этой статье мы углубимся в сообщение об ошибке «невозможно выполнить двоичный файл: ошибка формата Exec», с которым вы можете столкнуться в Ubuntu 18.04 x86-64 Target. Мы подробно рассмотрим, почему это происходит и как это исправить.

Чтобы исправить ошибку «невозможно выполнить двоичный файл: ошибка формата Exec» в Ubuntu 18.04 x86-64 Target, вам необходимо убедиться, что вы скомпилировали свой код в исполняемый файл и что файл имеет необходимые разрешения. Эта ошибка обычно возникает при попытке выполнить неисполняемый файл. Выполнив действия, описанные в этой статье, вы сможете решить эту проблему и успешно запустить исполняемый файл.

Понимание ошибки

Сообщение «невозможно выполнить двоичный файл: ошибка формата Exec» обычно появляется при попытке выполнить файл, который не имеет допустимого исполняемого формата. Это может произойти по разным причинам, например, если файл является файлом объектного кода, а не исполняемым файлом, или файл компилируется для другой архитектуры.

Выявление проблемы

Давайте рассмотрим сценарий, в котором у вас есть файл программы C test1.c, и вы скомпилируете его с помощью следующей команды:

gcc -g -Wall -c test1.c -o test1

Здесь gcc — это коллекция компиляторов GNU, -g используется для создания отладочной информации, которая будет использоваться с GDB, -Wall включает все предупреждающие сообщения компилятора, -c сообщает gcc, чтобы он остановился после этапа компиляции и создал объектный файл, и -o указывает выходной файл.

После запуска указанной выше команды при попытке выполнить выходной файл test1 с использованием ./test1 вы получаете сообщение «Ошибка формата Exec».

Решение

Ошибка возникает из-за того, что опция -c в команде указывает gcc создать объектный файл, который не является исполняемым. Чтобы решить эту проблему, вам необходимо скомпилировать код в исполняемый файл.

Удалите опцию -c из команды:

gcc -g -Wall test1.c -o test1

Эта команда скомпилирует test1.c в исполняемый файл с именем test1. Теперь, когда вы пытаетесь выполнить ./test1, он должен запускаться без сообщения «Ошибка формата выполнения».

Проверка прав доступа к файлам

Прежде чем вы сможете выполнить файл в Unix-подобных системах, вам необходимо убедиться, что у него есть разрешения на выполнение. Вы можете проверить права доступа к файлу с помощью команды ls -la.

Например,

ls -la тест1

В выводе будут показаны права доступа к файлу test1 в формате -rwxrwxrwx. Здесь r означает чтение, w — запись, а x — выполнение. Первый набор rwx предназначен для владельца, второй для группы и третий для остальных.

Если у вашего файла нет прав на выполнение, вы можете добавить их с помощью команды chmod:

chmod +x тест1

Заключение

В заключение отметим, что сообщение «невозможно выполнить двоичный файл: ошибка формата Exec» в Ubuntu 18.04 x86-64 Target обычно возникает из-за попытки выполнить неисполняемый файл. Убедившись, что вы скомпилировали свой код в исполняемый файл и что файл имеет необходимые разрешения, вы можете избежать этой ошибки.

Помните, всегда важно понимать команды и параметры, которые вы используете в своем терминале. Если вы не уверены в команде или параметре, вы всегда можете проверить справочные страницы (например, man gcc) для получения дополнительной информации.

Для получения более подробной информации о компиляторе gcc вы можете посетить официальная документация GCC. Для получения дополнительной информации о правах доступа к файлам в Unix-подобных системах вы можете ознакомиться с этим подробным руководством по правам доступа к файлам.

Объектный файл создается компилятором и содержит машинный код и данные, которые еще не находятся в окончательном исполняемом формате. Его необходимо связать с другими объектными файлами и библиотеками для создания исполняемого файла. С другой стороны, исполняемый файл — это файл, который может быть запущен непосредственно операционной системой.

Вы можете использовать команду file, за которой следует путь к двоичному файлу, чтобы проверить его архитектуру. Например, файл test1 отобразит информацию об архитектуре файла test1.

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

Вы можете использовать команду chmod, за которой следует указать нужные разрешения и имя файла. Например, chmod +x test1 добавит права на выполнение к файлу test1. Параметр +x добавляет разрешения на выполнение, +r — разрешения на чтение, а +w — разрешения на запись.

Если файл по-прежнему не запускается после предоставления разрешений на выполнение, возможно, файл несовместим с архитектурой вашей системы. Дважды проверьте, что вы скомпилировали файл для правильной архитектуры, и убедитесь, что все зависимости установлены правильно. Вы также можете попробовать запустить файл с помощью команды strace, чтобы получить дополнительную информацию о любых возможных ошибках.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *