错误提示:bash: ./mips-linux-gnu-gcc: 无法执行二进制文件

3

我最近在我的基于i686的Linux机器上安装了一个名为mips-linux-gnu-gcc的交叉编译工具链。当我想要编译一些代码时,它给出了错误提示。

每个安装步骤都是按照http://developer.mips.com/tools/compilers/open-source-toolchain-linux/的指示进行的。

在我安装好这个交叉编译工具链之后,我编写了一个简单的C语言helloworld文件:

    #include<stdio.h>
    int main(void)
    {
        printf("Hello World!\n");
        return 0;
    }

但是当我运行:

    /mips-linux-gnu-gcc hello.c -o hello -static

编译器只会输出错误信息:
    bash: ./mips-linux-gnu-gcc: cannot execute binary file

我在想也许在某些步骤上犯了错误,但我无法找出来。

也许有些人可以帮助我,我被这个问题弄糊涂了。

2个回答

7
你从MIPS下载的编译器是一个64位可执行文件。你正在运行32位主机吗?
如果你需要为32位主机构建针对MIPS GNU/Linux的交叉编译器,请考虑使用Sourcery CodeBench Lite编译器: Sourcery CodeBench Lite for MIPS GNU/Linux 上面链接到Sourcery CodeBench工具的链接来自于你提供的链接的上一级MIPS页面: MIPS Compilers Page

是的,我正在运行32位主机,但你怎么知道编译器是64位可执行文件? - junjies
@ElvisShen:file命令会告诉你:$ file mips_linux_toolchain/bin/mips-linux-gnu-gcc mips_linux_toolchain/bin/mips-linux-gnu-gcc: ELF 64位 LSB 可执行文件,x86-64,版本1(GNU/Linux),动态链接(使用共享库),适用于GNU/Linux 2.6.18,未剥离 - Ricardo Anguiano
谢谢!我已经成功运行了交叉编译工具! - junjies

1

看起来 mips-linux-gnu-gcc 二进制文件与您尝试运行它的机器的架构不匹配。这可能是32/64位不匹配之类的问题。

尝试使用免费的Mentor/Codesourcery MIPS gnu/gcc交叉编译工具链。您可以从这里下载。


今年,我的电脑是32位机器,但我在下载交叉编译工具时没有看到任何注释或警告。无论如何,我现在正在尝试使用Codesourcery MIPS gnu/gcc交叉工具链。希望它能够正常工作,感谢您的回答! - junjies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接