【发布时间】:2020-01-12 10:51:24
【问题描述】:
我正在尝试运行 c 程序 remoteServer.c。我使用 Makefile 编译它。当我尝试使用 ./remoteServer.o 运行它时,出现以下错误。我读到这可能是不同架构的原因,但我看到两者都是 x86-64。我在虚拟机上运行 ubuntu 18.04.03。 make 文件的代码在命令之后。我还在 .c 和 .o 文件上使用了 chmod 777。
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
生成文件:
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)
【问题讨论】:
-
您无法运行
.o文件。那是一个中间对象,而不是最终的可执行文件。您的 makefile 设置为构建一个名为make的可执行文件。不确定这是否是故意的,但请尝试查找并运行./make。
标签: c command-line compilation executable ubuntu-18.04