"cannot execute binary file: Exec format error" 编译 C 程序到 MIPS 二进制文件后发生



警告、二进制文件和系统arch的详细信息如下。这个c程序包含一个main函数和一个简单的加法函数。不包含外部文件。

zfq@inginging:~/study/sandbox$ mips64-linux-gnuabi64-gcc sandbox.c
zfq@inginging:~/study/sandbox$ ls
a.out  sandbox.c  sandbox.h  sandbox.s
zfq@inginging:~/study/sandbox$ file a.out
a.out: ELF 64-bit MSB executable, MIPS, MIPS64 rel2 version 1 (SYSV), dynamically linked, interpreter /lib64/ld.so.1, BuildID[sha1]=a16c9c7aba78aa5adcf89b053bdd3c58a7cbe330, for GNU/Linux 3.2.0, not stripped
zfq@inginging:~/study/sandbox$ cat /proc/version
Linux version 5.4.0-65-generic (buildd@lgw01-amd64-048) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #73~18.04.1-Ubuntu SMP Tue Jan 19 09:02:24 UTC 2021
zfq@inginging:~/study/sandbox$ ./a.out
bash: ./a.out: cannot execute binary file: Exec format error

即使系统是x86_64架构,elf文件也是64位的,二进制文件仍然存在格式错误。有人遇到过这样的问题吗?

如果你交叉编译,你是在告诉:把这个源代码翻译成机器可读的格式不是为这台计算机,而是为其他计算机/体系结构/系统

因此,翻译为MIPS的文件不能在amd64上运行,因为它们是完全不同的体系结构,具有完全不同的指令。

尝试在适当的架构下运行-在您的情况下是MIPS64 GNU/Linux计算机

或者简单地使用本地gcc或其他cc为您要编译的系统生成二进制文件。

最新更新