gcc和arm-linux-gcc是啥关系?区别是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc和arm-linux-gcc是啥关系?区别是啥?相关的知识,希望对你有一定的参考价值。

如题

gcc是linux系统下面用来将代码编译成一个可执行程序的手段。编译出来的是适用于linux系统的可执行二进制文件。可执行程序其实就是一堆的0101二进制机器码。这些机器码代表什么含义只有机器本身能理解。所以你用gcc编译出来的可执行程序只有在linux系统下面可以运行。举个例子你的可执行程序里面有一句01011.这句在linux下面可能是吃饭的意思,但是在windows下面可能01011是撒尿的意思。那你说linux的可执行程序放在window下面能正常运行吗?肯定不能嘛。你要的目的是吃饭,它帮你执行撒尿很显然就不对了。同样的可能01011在ARM下面的意思是睡觉。不同系统的机器码含义是不一样的。所以你在linux系统下面写的代码要怎样才能在ARM系统上面跑呢。这就需要用到交叉编译。arm-linux-gcc是什么意思?就是告诉你的编译器,我编写的环境是linux,但是我希望生成的可执行程序是在arm上面跑的。这就是交叉编译。编写环境和执行环境分离的一种手段。 参考技术A gcc是在linux下编译时用的命令,编译出来的程序需要在linux操作系统下运行,arm-linux-gcc是在用arm板交叉编译的时候使用的,最后编出来的程序是要烧写到arm板子里边去执行的。追问

两者有什么联系吗?

参考技术B gcc是x86架构指令用的
arm-linux-gcc 是RSIC(精简指令集) ARM架构上面用的..

它们会把c源码编译成不同的汇编指令然后生产不同平台的二进制可执行的文件...追问

可是百度百科上,说gcc支持ARM

可是百度百科上,说gcc支持ARM

追答

应该是宏观上说的gcc,gcc是一个编译c的编译器..具体的话arm上面要用arm-gcc的

参考技术C arm-linux-gcc是gcc的一种特殊版本。

arm-linux-4.4.1.tar.gz 和 arm-linux-gcc-4.3.2.tgz 有啥区别

参考技术A 都是arm-linux交叉编译工具,版本不同而已(解压目录可能有点区别)。
这2套编译工具都比较新,使用上一般都能满足要求,具体还要参考你要编译的源代码对编译器的版本要求(README、Changelog等)。追问

谢谢你...清楚些了
那么 我哟啊编译的源代码对 编译器的版本要求,怎么看的,我怎么知道呢?

追答

一般源代码主目录中都有README文件,里面会有对交叉编译器的版本要求,于linux kernel你还可以参看Documentation/Changes文件,里面还有对编译相关工具的详细要求。

追问

就是说,开发板上的内核,用的什么编译器.,那么在pc机上的linux编译程序给开发板,就得用一样的交叉编译器,否则编译通不过,还是?

追答

开发板内核源代码对交叉编译器有最低版本要求,只要PC系统上安装了大于这个版本的编译器,就能编译开发板的内核了。你是要编译内核还是应用程序,如果是应用的话,编译器版本没必要和编内核一样,相同最好。

以上是关于gcc和arm-linux-gcc是啥关系?区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

请教arm-linux-gcc 版本与QT版本和linux内核的关系!

arm-linux-gcc交叉编译是静态编译还是动态的

openjdk是啥,libgcj是啥,它们有啥区别。

arm-linux-gcc交叉编译器的制作,以及版本选择问题。

arm-linux-4.4.1.tar.gz 和 arm-linux-gcc-4.3.2.tgz 有啥区别

Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解