Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 无法执行二进制文件:Exec格式错误64位_Bash_Gcc_Binaryfiles_Windows Subsystem For Linux - Fatal编程技术网

Bash 无法执行二进制文件:Exec格式错误64位

Bash 无法执行二进制文件:Exec格式错误64位,bash,gcc,binaryfiles,windows-subsystem-for-linux,Bash,Gcc,Binaryfiles,Windows Subsystem For Linux,我在Windows Linux子系统下工作,该子系统在其他计算机上运行良好 我有一个64位文件:/ensembles.o:ELF 64位LSB可重定位,x86-64,版本1(SYSV),未剥离 uname-m:x86\u 64 我试过使用gcc编译器和clang编译器,两者都是松散的 即使这个C代码也不起作用: #include <stdio.h> #include <stdlib.h> #include "sac.h" #include "type_ensemble.

我在Windows Linux子系统下工作,该子系统在其他计算机上运行良好

我有一个64位文件:
/ensembles.o:ELF 64位LSB可重定位,x86-64,版本1(SYSV),未剥离

uname-m
x86\u 64

我试过使用
gcc
编译器和
clang
编译器,两者都是松散的

即使这个C代码也不起作用:

#include <stdio.h>
#include <stdlib.h>

#include "sac.h"
#include "type_ensemble.h"
#include "operations_ens.h"
int main(int argc, char ** argv) {
}
ELF 64位LSB relocatable类型的文件是ELF类型ET_REL的文件,不能直接执行。它通常称为对象文件或
.o
文件,是链接编辑器的输入文件

您需要将其链接(使用
gcc
ld
命令)以生成可执行文件。如果调用的是
gcc
,则不得传递
-r
-c
等选项,否则gcc将不会生成可执行文件

在您引用的makefile中,make只执行第一个目标,因为它是默认目标。尝试将
main
的规则移动到文件的开头,或添加规则

all: main

一开始。您还可以调用
makemain
来请求显式地构建
main
文件。

您说过您尝试过,但您到底尝试了什么?你说的“松散”是什么意思?我试着执行编译过的程序
/ensembles.o
。我的意思是不能编译它以便运行。
ensembles.o
不是一个编译程序,它是一个对象文件。你到底对gcc和clang做了什么?您的问题说您(不知怎么地)使用了它们,但您的评论说您只是运行了
/ensembles.o
,这两者都不涉及。好的,所以您需要
生成main
并运行
/main
。为什么要执行中间对象文件?我现在明白了,但如何链接我的所有对象文件?@Izio
gcc-o main-ensembles.o operation_en.o sac.o
,生成文件的最后一行。@lzio您的可执行文件名为
main
,但它不是因为您编写生成文件的方式而生成的。
all: main