您尚未登录。

楼主 #1 2020-01-15 09:45:41

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

交叉编译imx6ull,我用的arm-linux-gnueabihf-gcc,版本是7.4.0。
后来按教程制作debian文件系统,里面有个安装gcc,apt install gcc。安装完后一看版本是6.4.0.
这两个gcc的作用分别是什么?

交叉编译gcc,是用来编译uboot和内核的,我以为内核里应该有这个gcc。那么根文件系统里的软件,应该也是用这个gcc编译好的。
但是,现在根文件系统也安装了个gcc...

离线

#2 2020-01-15 10:05:40

Jmhh247
会员
注册时间: 2018-12-21
已发帖子: 262
积分: 262

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

- 内核里面没有gcc
- 一共有两个交叉工具链
- 7.4.0是你在ubuntu的交叉工具链,是在ubuntu上用的。
- 根文件系统里面的gcc,是在开发板上用的。
- 两个gcc都可以编译linux程序,然后在开发板上运行。

你仔细想想,差不多是一回事,又不是一回事。

离线

楼主 #3 2020-01-15 10:07:53

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

Jmhh247 说:

- 内核里面没有gcc
- 一共有两个交叉工具链
- 7.4.0是你在ubuntu的交叉工具链,是在ubuntu上用的。
- 根文件系统里面的gcc,是在开发板上用的。
- 两个gcc都可以编译linux程序,然后在开发板上运行。

你仔细想想,差不多是一回事,又不是一回事。

那,两个Gcc版本不一致也没事?

离线

#4 2020-01-15 10:11:47

红白机
会员
注册时间: 2020-01-02
已发帖子: 133
积分: 133

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

文件系统需要统一的gcc版本, 也就是 libc 和你的  app用同一个gcc, 如果你的 app 静态链接, 连这个gcc都不需要一致。

kernel(zImage)和 ko文件得用同一个 gcc 版本编译。

其他随意, 没有强制要求。

离线

#5 2020-01-15 10:15:40

shaoxi2010
会员
注册时间: 2019-06-13
已发帖子: 392
积分: 336

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

分清楚GCC交叉编译的host和target配置就能理解清楚了。

如果还分不清,建议自己手动编一次GCC就晓得是啥了,然后你就可以理解清楚。

然后你就可以发现原来GCC可以生成多个平台目标,只是某些原因变得不可以,改改后也可以。
GCC还提供了很多关键库,很多功能子集,反正搞懂GCC的交叉编译,会对你其他程序的交叉编译提供很好的思路

离线

#6 2020-01-15 10:32:25

Jmhh247
会员
注册时间: 2018-12-21
已发帖子: 262
积分: 262

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

有区别,但是可以用。

楼主用stm32吗,就像你用KEIL4和KEIL5都可以编译stm32的程序,虽然两者的版本不一样。。。宏观上差不多可以这样理解~


Gentlepig 说:

那,两个Gcc版本不一致也没事?

最近编辑记录 Jmhh247 (2020-01-15 10:33:10)

离线

#7 2020-01-15 11:10:34

小智
会员
注册时间: 2019-10-16
已发帖子: 112
积分: 84

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

我也来说一嘴,交叉编译gcc和安装到开发板的gcc是两个东西,就是版本不一样也能够运行,为啥呢,看官别忘了,你在移植文件系统busybox的关键一步就是把交叉编译的gcc的lib库复制到busybox里面,这就解释了你动态编译时候,应用系统要查找库,要到文件系统里查找,但是如果你在开发板上安装了gcc进行编译而生成的文件运行,调用的又是板子自带gcc的lib库,两个lib库不冲突,所以没事。相当于两个不同编译的文件是各找各妈,各管各家,老死不相往来,谁也不搭理谁,但是你要是板子上的gcc编译的文件调用交叉编译的lib库,就可能运行失败了

最近编辑记录 小智 (2020-01-15 11:18:32)

离线

#8 2020-01-15 11:15:09

小智
会员
注册时间: 2019-10-16
已发帖子: 112
积分: 84

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

对于楼主的第一个问题,交叉编译系统里没有交叉编译的gcc,但是必须有交叉编译的lib库,所以应用文件只能运行,而不能编译,交叉编译,交叉编译的运行环境是主机环境,而不是嵌入式环境,

最近编辑记录 小智 (2020-01-15 11:24:52)

离线

楼主 #9 2020-01-15 13:33:26

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

感谢各位回复,理解了些。

离线

#10 2020-01-15 17:08:45

szchen2006
会员
注册时间: 2019-10-09
已发帖子: 216
积分: 166.5

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

学习了,顶一下!

离线

楼主 #11 2020-01-16 11:27:38

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,378
积分: 1343.5

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

比如我要编译qt,需要交叉编译,那么我用之前编译uboot及内核的gcc7.4.0?还是用文件系统里安装的gcc6.4.0?

离线

#12 2020-01-16 17:35:54

Morgan
会员
注册时间: 2018-07-03
已发帖子: 28
积分: 23

Re: 请教,交叉编译器gcc和文件系统里的gcc是一回事吗?

交叉编译器,无他,方便。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn