bash: ./remoteServer .o: невозможно выполнить двоичный файл: Exe c ошибка формата - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь запустить программу c remoteServer. c. Я скомпилировал его, используя Makefile. Когда я пытаюсь запустить его с ./remoteServer.o, я получаю следующую ошибку. Я читал, что это может быть причиной другой архитектуры, но я видел, что оба были x86-64. Я бегу Ubuntu 18.04.03 на ВМ. Код для файла make находится после команд. Также я использовал chmod 777 для файлов. c и .o.

isidoros@isidoros-VirtualBox:~/choice$ ./remoteServer.o

bash: ./remoteServer.o: cannot execute binary file: Exec format error

isidoros@isidoros-VirtualBox:~/choice$ file remoteServer.c

remoteServer.c: C source, ASCII text

isidoros@isidoros-VirtualBox:~/choice$ file remoteServer.o

remoteServer.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), with debug_info, not stripped

isidoros@isidoros-VirtualBox:~/choice$ uname -m

x86_64

Makefile:

OBJS    = remoteServer.o

SOURCE  = remoteServer.c

HEADER  = 

OUT = make

CC   = gcc

FLAGS    = -g -c -Wall

LFLAGS   = 

all: $(OBJS)
    $(CC) -g $(OBJS) -o $(OUT) $(LFLAGS)

remoteServer.o: remoteServer.c
    $(CC) $(FLAGS) remoteServer.c 

clean:
    rm -f $(OBJS) $(OUT)

1 Ответ

0 голосов
/ 17 февраля 2020

Обратите внимание, что g cc - c компилирует исходные файлы без ссылки .

Затем, учтите, что "Компиляция относится к обработке файлов исходного кода ( . c,. cc или. cpp) и создание файла объекта. Этот шаг не создает ничего, что пользователь может на самом деле запустить . " reference

Между тем: "Связывание относится к созданию одного исполняемого файла из нескольких объектных файлов."

Итак, вы, вероятно, хотели связать программа, даже если она содержит один исходный файл (с вашей точки зрения, это может зависеть от библиотек, которые вы включаете).

Я также думаю, что ваш make-файл пытается назвать исполняемый файл как "make", что может быть проблемой, поскольку вы, вероятно, вызываете программу GNU make для компиляции кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...