有没有办法使用gcc将C转换为MIPS?

问题描述:

我完成了一个类的C到MIPS转换,我想根据程序集检查它。我听说有一种配置gcc的方法,它可以将C代码转换为MIPS架构,而不是x86架构(我的计算机用户使用Intel i5处理器)并打印输出。有没有办法使用gcc将C转换为MIPS?

在Ubuntu(运行gcc)中运行终端,我用什么命令配置gcc转换为MIPS?有什么我需要安装以及?编辑: 让我澄清。请阅读这个。 我不是在寻找使用哪种编译器,或者说“你可以交叉编译,但是你应该使用这个没有关于如何设置的指令的其他东西。”

如果您打算发布该信息,请至少向我介绍说明。 GCC附带了Ubuntu。我没有关于如何安装编译器的经验,也不容易找到GCC以外的在线教程。然后还有我需要了解的交叉编译的情况。谢谢。

+3

你可能只想“编译”而不是“转换”。编译器总是将一种语言“转换”为另一种语言。如果你在x86 boxen上运行,它通常会将你的源语言转换为适合你的操作系统的x86可执行文件,但是编译器并不局限于将它们的主机操作系统和体系结构作为目标... – dmckee 2010-11-14 00:47:40

+0

是的,这就是我所要求的。谢谢你纠正我对术语的使用,但你能回答真正的问题吗? – Mike 2010-11-14 01:05:55

您需要将源文件下载到binutils和gcc-core,然后编译为../configure --target=mips ...。您可能需要选择特定的MIPS目标。然后你可以使用mips-gcc -S

+0

请你多解释一下。我也需要从C转换到MIPSR3000。 – 2016-11-29 09:31:29

+0

@ShankhadeepMukerji请看https://gcc.gnu.org/install/。在第3步下看“目标规格”。 – 2016-11-29 20:20:05

这不是一个配置的东西,你需要一个交叉编译到MIPS的GCC版本。这需要一个特殊的海湾合作委员会构建和相当毛茸茸的建立(建设海合会是不适合心脏)。

我建议使用LCC这个。使用LCC进行交叉编译比使用GCC更容易,在当前机器上构建LCC只需几秒钟。

+1

感谢您的快速响应,但它绕过了我的问题。你告诉我我应该做些什么(交叉编译?),然后指引我到另一个编译器。我详细地询问了如何获得该版本的GCC和使用哪些命令,而不是如果我应该使用GCC或不同的编译器。然后就是设置这个编译器的情况,在LCC站点上没有任何类型的指令。 – Mike 2010-11-14 00:37:54

+5

我假设你的主要兴趣是将C编译成MIPS汇编,而不是用GCC编译。如果你坚持使用GCC来做这件事,那么请继续,但考虑一下自己的警告 - 编译一个程序是不值得的(特别是如果你为获得LCC而苦恼)。一些(相对过时,但我没有找到任何更新的)关于构建交叉GCC的说明在这里:http://gcc.gnu.org/wiki/Building_Cross_Toolchains_with_gcc – 2010-11-14 00:52:33

+1

我的错误。我想我误解了你的答案。是的,我的兴趣是将C转换为MIPS。但是如果你打算告诉我使用不同的编译器,那么你可以将它引荐到解释如何设置它的地方,然后如何与MIPS交叉编译?我找不到这些东西。 – Mike 2010-11-14 00:57:03

你应该编译你自己的可以交叉编译的gcc版本。当然这并不容易,所以你可以寻找不同的方法..例如this SDK。

您可以交叉编译GCC,以便生成MIPS代码而不是x86。这是一个很好的学习经历。

如果你想要快速的结果,你也可以得到一个MIPS支持预构建的GCC。一个是CodeSourcery Lite工具链。它是免费的,有很多体系结构(包括MIPS),他们已经准备好使用Linux和Windows的二进制文件。

http://www.codesourcery.com/sgpp/lite/mips/portal/[email protected]=lite

GCC 可以为大量架构产生汇编代码,包括MIPS。但是当GCC本身编译时,决定给定GCC实例的目标架构。您将在Ubuntu系统中找到的预编译二进制文件知道x86(可能是32位和64位模式),但不知道MIPS。

编译具有不同于GCC本身将运行的体系结构的目标体系结构的GCC被称为准备交叉编译工具链。这是可行的,但需要相当多的文档阅读和耐心;您通常需要首先构建交叉汇编器和交叉链接器(GNU binutils),然后构建交叉GCC本身。

我推荐使用buildroot。这是一组脚本和makefile,旨在帮助完成交叉编译工具链和实用程序的生成。在一天结束时,您将获得目标系统的完整操作系统和开发工具。这包括你之后的交叉编译器。

另一个完全不同的解决方案是使用QEMU。这是包括MIPS系统在内的各种处理器和系统的模拟器。您可以使用它来运行带有MIPS处理器的虚拟机,并在该机器中安装适用于MIPS的操作系统,例如, Debian,一个Linux发行版。这样,你得到一个原生 GCC(一个运行在MIPS系统上的GCC并为MIPS生成代码)。

QEMU的方式可能会简单一点;使用交叉编译需要对某些毛发细节有所了解。无论哪种方式,您都需要大约1 GB的可用磁盘空间。

+1

如果我可以先生我会upvote你两次这个答案,欢呼 – timB33 2011-08-27 21:18:56

+0

如果你只是需要编译器:http://crosstool-ng.org/可能是一个选项 – Alex 2014-07-08 11:29:28