2016-12-07 49 views
0

我对linux和GCC很新。树莓派的价格引诱了我的兴趣。我有兴趣使用GCC交叉编译一些C代码,以针对某些嵌入式硬件,特别是Cortex-M3微。我最终想要有一整套编译器/编程器/调试器,但现在我开始编译。'构建gcc交叉编译器'是什么意思?

所以,我做的RP3快速非交叉编译测试,一切都很好。现在我正在研究如何交叉编译并锁定我的UC。在线gcc文档似乎表明我可以使用普通的vanilla gcc,并且只是指定一些命令行选项来执行交叉编译:https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

但是四处搜索,我发现很多人提到构建gcc交叉编译器。这是什么意思?

gcc是否有作为交叉编译器加倍的选项?如果是这样,为什么人们希望“构建”一个交叉编译器?

+0

见*交叉编译特定选项*的通过的方式约90%[GCC安装说明](https://gcc.gnu.org/install/configure.html#TOC3)(GCC 6.2.0版本 - URL可能会在将来更改,但基本部分是版本中性)。 –

+0

因此,包含在RP3中的GCC不能像交叉编译器那样工作?我将不得不遵循该链接并从源码重建GCC,从而提供正确的交叉编译器选项?这些进程的输出将成为特定于Cortex-M3的交叉编译器?我的理解是否正确? – user2913869

+0

因为我对RP3或Cortex-M3一无所知,所以我不能说交叉编译器是否可以交叉编译到另一个交叉编译器,但有一个公平的机会,答案是“否”。如果是这样的话,你必须找到其他人为你构建的交叉编译器,或者自己构建它。这可能并不容易 - 但我从来没有尝试构建一个GCC交叉编译器,所以我不确定这一点。注意你可能需要的其他基础设施 - 用于跨平台的'binutils'。 –

回答

0

交叉编译器是一个是在机器类型A创建的(硬件的组合和O/S)和任一运行在不同的乙机器类型或运行于A类,但产生软件要在不同的计算机上运行B型。

因此,如果您有一台使用x86_64 CPU的Linux机器并运行某个版本的Linux,但您编译GCC以便它可以在运行某个版本的AIX的IBM PowerPC平台上运行,那么您应该创建一个交叉编译器。

另一变型可能使用的Linux机器上运行,但对于嵌入式硬件芯片产生码的x86_64的CPU来具有Linux上的编译器。然后,您可以从Linux机器的CPU能力中受益,同时部署到一个更小,功能更弱的系统,可能没有自己的o/s,或者只有最小的o/s。