问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Ubuntu 嵌入式交叉编译环境搭建

发布网友 发布时间:2023-10-11 14:44

我来回答

1个回答

热心网友 时间:2024-10-14 13:15

在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译,这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。

安装前的絮叨,首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。 交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。 那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。

使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图

通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图

接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /etc/profile 编辑profile文件,添加环境变量。

在profile中最后一行添加:export PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行, 编写完退出并保存

使用命令:source /etc/profile 使环境变量生效

在终端上输入命令arm-linux再按Tab键,可以看到下图,说明环境变量设置成功了

使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

意思是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库。

待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图

验证,编译一个hello.c文件

使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功 可见成功生成了二进制文件。

总结:其实在安装过程中,会出现各种各样的错误,一般就是库文件安装不完整,大家可以把错误信息直接复制,到网上搜索一下,一般都能解决,这里希望大家在学习Linux时多一点耐心。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怀孕错过了糖筛怎么办 糖筛有哪些注意事项 怀孕几个月查唐筛 蔡家沟镇慈云寺 哈佳高铁高楞站多少平方米位置在那 超威电池生产日期怎么看 超威电池寿命一般多长时间 华晨宇鸟巢四面台10w+秒罄!!火星演唱会舞台概念图震撼发布! 手机连接160wifi电脑蓝屏使用160WiFi遇到问题应该如何解决 为什么手机wifi总是刚开启,锁屏就掉了。wifi设置里的休眠模式也是永久的... 建行卡为什么不能网上转账 学校发我们的建设银行卡一定要激活吗? 我打电话查余额说输入取钱密码... 蜂蜜林檬水在什么时候喝最好2 喝林檬水有什么好处8 嫦娥二号探月卫星有什么功能?35 ...待机时怎样才不走流量呢?还有自己下载的酷狗音乐播放歌曲时也消耗流... 北京丰台区的劳动局在哪里?坐几路车?有多远? 彩超说 肝左叶肝内胆管结石可能算是确诊了还是没 找一款小时候吃过的雪糕!十五六年前了应该…2 太原新力惠中学好不好? 如何将碘从碘的四氯化碳溶液中分离出来 责人之心责己下一句是? 短头发圆脸的人适合戴什么帽子1 这句话该那么回复?看来大城市有大城市的好,也有大城市的烦恼 我的妈妈和我的爸爸有一样的爱好用英文怎么说? 圆脸适合戴什么样的帽子23 我刚做了胆结石微创手术,又查出肝内胆管结石,结石很小 林檬和蜂蜜泡水喝有什么好处1 满洲里黄金集团什么时候需要人?什么时候招人呢?我是学会计专业...1 中国黄金满洲里铜钼矿待遇问题。 中国黄金满洲里乌奴格吐山铜钼...4 我和他有一样的爱好英语怎么译5 电脑键盘上关闭当前窗口的快捷键是什么582 林檬蜂蜜水怎么喝2 无纸化初级会计师考试要注意什么7 初级会计职称无纸化考试,考试时需要带什么东西呢,是不是只要带... 初级会计职称无纸化考试需要带什么证件?64 参加会计初级考试时,可以带哪些东西2 徐泾镇盈港东路2655弄邮政编码是什么 有朋友说知因果素牌西兰花浓缩片对预防癌症有帮助, 2017年中级会计职称考试全面实行无纸化 那考试会变难吗7 妈妈出差是2015年2月24日,3月5日回家他一共出差多少天? 大城市有大城市的好,小城市有小城市的妙 最近嫦娥二号飞向月球后,卫星还能回到地球来吗?14 纠结于两款微单,松下GF2和索尼NEXC3 松下GF2 和 索尼 NEX C3 选哪个?1 新疆乌鲁木齐航空部到昌吉快递需要多久?申通? ...个传奇单机版,下载就可以玩,而且进去你就是GM,只要自己一个人玩... 问个老话题索尼NEX-C3,松下GF2/3,那款比较... 索尼nex-c3和松下GF3哪个好一点??3 电脑屏幕锁定的快捷键是什么?34 大城市有大城市的好,小城市有小城市的好。 如图,四边形ABCD是等腰梯形,BC//AD,AB=DC,BC=2AD=4cm,BD⊥CD,AC⊥AB...