bash:./remoteServer.o:无法执行二进制文件:Exec格式错误
我正在尝试运行c程序remoteServer.c。我使用Makefile编译了它。当我尝试使用./remoteServer.o运行它时,我得到以下错误。我读到这可能是不同体系结构的原因,但我发现两者都是x86-64。我在虚拟机上运行ubuntu 18.04.03。make文件的代码位于命令之后。我还在.c和.o文件上使用了chmod 777bash:./remoteServer.o:无法执行二进制文件:Exec格式错误,c,command-line,compilation,executable,ubuntu-18.04,C,Command Line,Compilation,Executable,Ubuntu 18.04,我正在尝试运行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.
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)
请注意这一点
然后,“编译”指的是源代码文件(.c,.cc,.cp)的处理和“对象”文件的创建。<强>此步骤不会创建用户可以实际运行的< /强>。 同时:“链接是指从多个对象文件创建单个可执行文件。”
因此,您可能希望链接程序,即使它包含单个源文件(从您的角度来看,这可能取决于您包含的库) 我还认为您的makefile试图将可执行文件命名为“make”,这可能是个问题,因为您可能正在调用GNUmake
程序来编译代码。请注意这一点
然后,“编译”指的是源代码文件(.c,.cc,.cp)的处理和“对象”文件的创建。<强>此步骤不会创建用户可以实际运行的< /强>。 同时:“链接是指从多个对象文件创建单个可执行文件。”
因此,您可能希望链接程序,即使它包含单个源文件(从您的角度来看,这可能取决于您包含的库)我还认为您的makefile试图将可执行文件命名为“make”,这可能是一个问题,因为您可能正在调用GNU
make
程序来编译代码。您无法运行.o
文件。这是一个中间对象,而不是最终的可执行文件。您的makefile被设置为构建一个名为make
的可执行文件。不确定这是否是故意的,但请尝试查找并运行/make
。您无法运行.o
文件。这是一个中间对象,而不是最终的可执行文件。您的makefile被设置为构建一个名为make
的可执行文件。不确定这是否是故意的,但请尝试查找并运行/make
。