Linux下的交叉编译环境设置

我想学嵌入式开发,现在先设置Linux下的交叉编译环境,需要用到arm-Linux-GCC等,需要有纯命令的环境,还需要有图形界面的环境。请先举例说明交叉编译环境是什么东... 我想学嵌入式开发,现在先设置Linux下的交叉编译环境,需要用到arm-Linux-GCC等,需要有纯命令的环境,还需要有图形界面的环境。
请先举例说明交叉编译环境是什么东西。
然后回答具体建立比较全面的交叉编译环境的步骤。
还有其他的编译环境,比如把C语言编译为可执行的文件,这个和交叉编译的区别是什么?
我用的是ubuntu-11.10-desktop-i386版本。
展开
 我来答
shine雪瑞
推荐于2019-03-21 · 知道合伙人教育行家
shine雪瑞
知道合伙人教育行家
采纳数:140 获赞数:26668
学生

向TA提问 私信TA
展开全部
采用交叉编译的主要原因在于,多数嵌入式目标系统不能提供足够的资源供编译过程使用,因而只好将编译工程转移到高性能的主机中进行。
linux下的交叉编译环境重要包括以下几个部分:
1.对目标系统的编译器gcc
2.对目标系统的二进制工具binutils
3.目标系统的标准c库glibc
4.目标系统的linux内核头文件
交叉编译环境的建立步骤
一、下载源代码 下载包括binutils、gcc、glibc及linux内核的源代码(需要注意的是,glibc和内核源代码的版本必须与目标机上实际使用的版本保持一致),并设定shell变量PREFIX指定可执行程序的安装路径。
二、编译binutils 首先运行configure文件,并使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,然后执行make install。
三、配置linux内核头文件
首先执行make mrproper进行清理工作,然后执行make config ARCH=arm(或make menuconfig/xconfig ARCH=arm)进行配置(注意,一定要在命令行中使用ARCH=arm指定cpu架构,因为缺省架构为主机的cpu架构),这一步需要根据目标机的实际情况进行详细的配置,笔者进行的实验中目标机为HP的ipaq-hp3630 PDA,因而设置system type为SA11X0,SA11X0 Implementations中选择Compaq iPAQ H3600/H3700。
配置完成之后,需要将内核头文件拷贝到安装目录: cp -dR include/asm-arm $PREFIX/arm-linux/include/asm cp -dR include/linux $PREFIX/arm-linux/include/linux
四、第一次编译gcc
首先运行configure文件,使用--prefix=$PREFIX参数指定安装路径,使用--target=arm-linux参数指定目标机类型,并使用--disable-threads、--disable-shared、--enable-languages=c参数,然后执行make install。这一步将生成一个最简的gcc。由于编译整个gcc是需要目标机的glibc库的,它现在还不存在,因此需要首先生成一个最简的gcc,它只需要具备编译目标机glibc库的能力即可。
五、交叉编译glibc
这一步骤生成的代码是针对目标机cpu的,因此它属于一个交叉编译过程。该过程要用到linux内核头文件,默认路径为$PREFIX/arm-linux/sys-linux,因而需要在$PREFIX/arm-linux中建立一个名为sys-linux的软连接,使其内核头文件所在的include目录;或者,也可以在接下来要执行的configure命令中使用--with-headers参数指定linux内核头文件的实际路径。
configure的运行参数设置如下(因为是交叉编译,所以要将编译器变量CC设为arm-linux-gcc): CC=arm-linux-gcc ./configure --prefix=$PREFIX/arm-linux --host=arm-linux --enable-add-ons 最后,按以上配置执行configure和make install,glibc的交叉编译过程就算完成了,这里需要指出的是,glibc的安装路径设置为$PREFIXARCH=arm/arm-linux,如果此处设置不当,第二次编译gcc时可能找不到glibc的头文件和库。
六、第二次编译gcc
运行configure,参数设置为--prefix=$PREFIX --target=arm-linux --enable-languages=c,c++。
运行make install。
到此为止整个交叉编译环境就完全生成了。
几点注意事项
第一点、在第一次编译gcc的时候可能会出现找不到stdio.h的错误,解决办法是修改gcc/config/arm/t-linux文件,在TARGET_LIBGCC2_CFLAGS变量的设定中增加-Dinhibit_libc和-D__gthr_posix_h。
mautow
2012-03-20 · TA获得超过298个赞
知道小有建树答主
回答量:467
采纳率:0%
帮助的人:330万
展开全部
记住一点,需要什么就学什么,安装什么,别扯出自己一点也不明白的!
你要的就是gcc的编译环境,一句apt-get install build-essential全安装了
剩下自己找本书看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Diablo_疯
2012-03-23
知道答主
回答量:6
采纳率:0%
帮助的人:9680
展开全部
你可以先找一些搭建嵌入式linux开发平台的文档 练练手
关于c语言属于初始编译,一开始什么都没有,缺少c链路库glibc的支持。
等到glibc编译好了之后,重新编译gcc就可以提供完整的c++支持了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d81e93d
推荐于2017-12-16 · TA获得超过331个赞
知道答主
回答量:28
采纳率:0%
帮助的人:40.3万
展开全部
交叉编译环境,指的是你在PC的操作系统上编译ARM上能运行的程序的编译环境。
说白了,你在PC的操作系统上要的arm-none-linux-gnueabi-gcc等这些工具

有一个网站上,交叉编译环境是直接安装后就可以用的
https://sourcery.mentor.com/sgpp/lite/arm/portal/release1803
选择第一个IA32 GNU/Linux Installer 下载一个arm*.bin文件
把它放在Linux下(注在下边*表示通配符,视你下载的文件而定)
在终端中运行
chmod u+x arm*.bin
./arm*.bin
然后重启电脑
arm-none-linux-gnueabi-gcc --version
可以看看你的编译工具的版本信息
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式