【问题标题】:bash: ./mips-linux-gnu-gcc: cannot execute binary file errorbash: ./mips-linux-gnu-gcc: 无法执行二进制文件错误
【发布时间】:2012-12-06 04:12:35
【问题描述】:

我最近在我的基于 i686 的 linux 机器上安装了一个 mips-linux-gnu-gcc crosstool。当我想编译一些代码时,它向我显示了那个错误。

每个安装步骤后面都有http://developer.mips.com/tools/compilers/open-source-toolchain-linux/

安装crosstool后,我写了一个简单的helloworld C文件,如下所示:

    #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

我想知道也许我在某些步骤中犯了一些错误,但我无法弄清楚。

也许你们中的一些人可以帮助我,我对这个问题感到困惑。

【问题讨论】:

    标签: gcc mips toolchain


    【解决方案1】:

    您从 MIPS 下载的编译器是 64 位可执行文件。您运行的是 32 位主机吗?

    如果您需要针对 MIPS GNU/Linux 的 32 位主机的交叉编译器,请考虑为 MIPS GNU/Linux 目标使用 Sourcery CodeBench Lite 编译器:

    Sourcery CodeBench Lite for MIPS GNU/Linux

    上述 Sourcery CodeBench 工具的链接来自 MIPS 页面,仅比您提供的链接高一级:

    MIPS Compilers Page

    【讨论】:

    • 是的,我运行的是 32 位主机,但你怎么知道编译器是 64 位可执行文件?
    • @ElvisShen:文件命令会告诉你:$ file mips_linux_toolchain/bin/mips-linux-gnu-gcc mips_linux_toolchain/bin/mips-linux-gnu-gcc: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
    • 谢谢!我已经成功运行了交叉工具!
    【解决方案2】:

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

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

    【讨论】:

    • 年,我的电脑是 32 位机器,但我在下载交叉工具的那个页面上没有看到任何注释或警告。无论如何,我现在正在尝试 Codesourcery MIPS gnu/gcc 跨工具链。希望它会起作用,并感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多