首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法执行二进制文件: Exec格式错误64位

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

Stack Overflow用户
提问于 2018-10-03 08:07:54
回答 1查看 2.8K关注 0票数 0

我在Windows子系统下,它在其他计算机上运行良好。

我有一个64位文件:./ensembles.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped

uname -mx86_64

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

甚至这个C代码也不起作用:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

#include "sac.h"
#include "type_ensemble.h"
#include "operations_ens.h"
int main(int argc, char ** argv) {
}

错误:-bash: ./ensembles.o: cannot execute binary file: Exec format error

我的制作文件:

代码语言:javascript
复制
ensembles.o : ensembles.c sac.h type_ensemble.h operations_ens.h
    gcc -c ensembles.c
operation_ens.o : operations_ens.c operations_ens.h
    gcc -c operations_ens.c
sac.o : sac.c sac.h
    gcc -c sac.c
main: ensembles.o operation_ens.o sac.o
    gcc -o main ensembles.o operation_ens.o sac.o
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-03 08:13:44

类型为ELF 64位LSB可重定位的文件是ELF类型的ET_REL文件,不能直接执行。它通常被称为对象文件或.o文件,它是链接编辑器的输入文件。

您需要将其链接(使用gccld命令)来生成可执行文件。如果您正在调用gcc,则不能传递-r-c之类的选项,否则GCC将不会生成可执行文件。

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

代码语言:javascript
复制
all: main

刚开始的时候。您还可以调用make main请求显式构建main文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52622537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档