交叉编译环境

arm裸机,linux开发,编译器,编译环境答疑解惑

前言:
最近一直在跟着正点原子的i.mx6ull视频学习,打算研究一下嵌入式linux的开发,主要是道听途说单片机开发未来薪资不高,想着反正单片机学的也就半吊子,何不趁此时各大厂商(某点,某火,某山)纷纷推出免费视频,开始进行价格战的时候,从中渔翁得利,白嫖一把,于是入手一块某点的i.mx6ull开发板,开始疯狂折腾,得益于之前学习视频教程的不断锤炼,现在对视频教程已经产生了独特的青睐,既然有,那就干起来吧,但是刚从stm32转到i.mx6ull开发的学习,还是有很多的不适应,尤其是之前stm32用的最多的只是f1系列,f4系列只用过一次,还是疯狂套例程的智能浇花系统,并且从未接触过单片机端的实时操作系统。感觉易上手确实比较打怵,好在刚开始某点教程还算可以,现在跟着学到了中断相关的东西,因为Ubuntu虚拟机的问题耽误了好几天,于是想出种种办法应对让人又爱又恨Ubuntu,在此记录一下踩过的坑,知道的经验,因为我学的时候没人告诉我,视频就摆在那里,具体能吸收多少真的靠自己。虽然跟着视频教程,跟着开发指南进行的有条不紊,偶尔会碰到许多相关的问题,但都是比较容易解决,正因为如此,太过简单的学习反而容易遗漏许多内容,并且好多相关的概念与只是都是知其然而不知其所以然,本着给自己答疑解惑的目的,再次记录下众多相关的概念,以及整体的系统框架。由于本人才学到裸机中断相关的内容,理解如有差池,敬请谅解。

1.开发环境问题 首先要确定的一点是Linux环境下编程相比于Windows下编程有什么好处??

由于我也是一直怀有这个疑问,故此这次我边查找资料边写,看看大家都是怎么说的,具体资料链接我也放在下面(尊重版权),大家可以自己查看,我也会结合自己理解进行扩展

1.大部分人不经常在Linux编程,但会在Linux下完成编译,调试运行,可能是为了适配各种大厂要在Linux服务器下部署程序

2.因为你的程序要运行在Linux下,不想跨平台开发

3.目前大多数服务器都是Linux的,要想做开发,基本离不开Linux,此时适应一下Linux开发,理所当然,windows服务器贵的离谱

4.shell编程很方便,Linux稳定

5.可以了解更多的技术细节,就像编译的四个步骤,windows下没人会注意这些

6.使用集成IDE昂贵的费用,虽然好用,架不住贵

7.命令行操作确实简便快捷(结合自身体验回答一下,将近一个月的ARM学习过程:开始是windows下vscode编写程序,拖到Ubuntu虚拟机进行编译,编译完Ubuntu虚拟机进行烧写,这样如果改动一点程序,就要来回拖一遍,感觉非常不爽。于是转向Ubuntu虚拟机下的vscode编写程序,编译,烧写一步到位,但是电脑本身性能限制虚拟机性能,感觉有点不如windows流畅,终于有一天Ubuntu虚拟机开机启动不了,重装以后程序丢了,辛辛苦苦配置的环境也丢了,花了两天重新配环境,中间踩了好多坑,但我觉得如果是Ubuntu原生系统,肯定是没有问题的。于是开始转向另一种方案,windows下vscode编写,git提交到远端服务器,虚拟机中断pull下来代码进行编译烧写,因为vscode自带集成终端,所以很容易通过快捷键直接切换,完成上传,这样只需要再vscode与linux终端之间进行操作,全程只涉及一次鼠标,感觉确实非常流畅,但受制于github的访问速度,上传需要2~3秒,不过换成国内的码云效果明显提升,1s内完成,相当快捷。尤其是习惯了Linux的命令以后确实不想用windows的命令了,所以我的windows电脑命令行最常用的就是git bash 连带vscode的集成终端也摒弃了cmd换成了git bash 不得不说有时候命令行确实方便,这也就是为什么那么多人偏爱shell脚本的原因)

8.在linux环境下学习操作系统,系统底层调用,网络底层,c语言这些平时windows封装好的东西,一开始可能会比较难以上手,但是一但你熟悉了,效果应该是比在windows环境下更好的(这是看的别人的一条回答,但自己对编译器这一堆的了解真的是来自于Linux下的瞎折腾).

9.有时候确实省心,依赖于强大的包管理工具,比如安装常用编程工具,重启网卡,配置与查看ip等等......

10.广泛的开源社区,开放的内核以及开源的思想

11.最后我总结得到嵌入式Linux开发要在Linux进行的原因是开发工具多,支持广,开源,不收费,历史渊源,总结下来就是“随大流”,娱乐,办公等常用windows,但软件,嵌入式是真的常用Linux。

知乎问答:为什么要在Linux下编程

https://www.zhihu.com/question/29404530

嵌入式中为什么要用Linux操作系统

https://blog.csdn.net/memoryjs/article/details/7912146

为什么学习Linux开发

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfgpp.html