天嵌 ARM开发社区

 找回密码
 注册
查看: 9432|回复: 1

说说我是如何学习arm和linux的

[复制链接]
冰帝 发表于 2014-7-31 22:51:29 | 显示全部楼层 |阅读模式
首要触摸Linux不多,对Linux渠道的开发更是一窍不通。而如今的趋势越来越标明,作为一个嵌入式的研制人员,Linux与ARM的趋势现已不可避免。。自个菜鸟一枚,从七月放暑假开端学习Linux,先来谈谈学习Linux的准备作业:

1.Linux的学习之前的觉悟:     
        Linux入门是很简略的,疑问是你是不是有耐心,是不是爱折腾,是不是不排挤重装一类的大修。没折腾能够说是学欠好Linux的,鸟哥说过,要真实晓得Linux的分区机制,对LVM运用适当熟练,没有20次以上的Linux装机经历是堆集不起来的,所以必定不要怕折腾。

由于我们之前都运用Windows,所以我也尽能够照看这些“菜鸟”。
         我的引荐,假如你首次触摸Linux,那么首要在虚拟机中测验它。虚拟机挂载Linux是很方便的,网上教程许多,在这我就不赘述了。。。
2.Linux准备作业之2 :晓得Linux的发行版别
           Linux发行版并非Linux,Linux仅是指操作体系的内核,作为科班出世的你不要让我解说,我也没时刻。我引荐的发行版如下:
? UBUNTU合适纯菜鸟,寻求安稳的官方支撑,对体系安稳性需求较弱,喜爱最新运用,相对来说不太喜爱折腾的开发者。
? Debian,相对UBUNTU难许多的发行版,突出特点是安稳与简略运用的包办理体系,缺陷是公司支撑不足,为社区开发驱动。
? Arch,追逐时髦的开发者的首选,长处是包更新适当快,无缝晋级,一次装置根本能够一向运作下去,没有如UBUNTU那样的版别概念,说的专业点叫翻滚晋级,保持你的体系必定是最新的。缺陷明显易见,不安稳。一同装置装备相对Debian再费事点。

? Gentoo,相对Arch再难点,考验运用者的归纳*平,从体系装置到微调,内核编译都亲历亲为,是高手及黑客显现自个技能手段,按需装备契合自个需求的体系的首选。

? Slackware与Gentoo相似。
? CentOS,社区保护的RedHat的复刻版别,彻底运用RedHat的源码从头编译生成,与RedHat的兼容性有理论上来说是最佳的。假如你专心于Linux服务器,如网络办理,架站,那么CentOS是你的挑选。

? LFS,终极黑客显摆东西,彻底从源代码装置,编译体系。装置前你得到的只要一份文档,你要做的即是照文档你的阐明,一步步,一条条指令,一个个软件包的去构建你的Linux,彻底由你自个操控,想要啥即是啥。假如你做出了LFS,证实你的Linux功底现已适当不错,假如你能拿LFS文档活学活用,再将Linux从源代码开端移植到嵌入式体系,我敢说我国的公司你能够混的极好。

3.Linux准备作业之三:(以下有些是择选自网上加上自个的总结)
(1)Linux根底
    你得挑一个合适你的体系,然后在虚拟机装置它,开端运用它。假如你想疾速学会Linux,我有一个主张即是忘记图形界面,不要想图形界面能不能供给你疑问的答案,而是满世界的去找,去问,怎么用指令行处理你的疑问。在这个过程中,你最佳能将Linux的指令把握的不错,起码常用的指令得晓得,一同建立了自个的常识库,里边是你堆集的各项常识。

(2) Linux渠道的C/C++开发,一同还有Bash脚本编程。
    再下个期间,你需求学习的是Linux渠道的C/C++开发,一同还有Bash脚本编程,假如你对Java兴趣很深还有Java。相同,主张你扔掉掉图形界面的IDE,从VIM开端,为啥是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM合适初学者,合适手对比笨,脑袋对比慢的开发者。Emacs的键位太多,太复杂,我很害怕。然后是GCC,Make,Eclipse(Java,C++或许)。虽然将C++列在了Eclipse中,但我并不引荐用IDE开发C++,由于这不是Linux的文明,简略让你疏忽一些你大概留意的疑问。IDE让你变懒,懒得跟猪相同。假如你对程序调试,测验作业很感兴趣,GDB也得学的极好,假如不是GDB也是必修课。这是开发的第一步,留意我并没有提过一句Linux体系API的内容,这个期间也不要关怀这个。你要做的即是堆集经历,在Linux渠道的开发经历。我引荐的书如下:C言语程序设计,谭浩强的也能够。C言语,白皮书当然非常好。C++引荐C++ Primer Plus,Java我不喜爱,就不引荐了。东西方面引荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发辅导pdf,汇编言语程序设计(让你对库,连接,内嵌汇编,编译器优化选项有开始晓得,不用深度)。

假如你这个期间过不了就不用往下做了,这是底线,最根底的根底,不然脱离,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文明或UNIX文明相背的,程序是走不远的,不能够像Bash,VIM这些神品相同。所以做欠好爽性脱离。

(3) UNIX环境高档编程
接下来进入Linux体系编程,不贰挑选,APUE,UNIX环境高档编程,一遍一遍的看,看10遍都嫌少,假如你能够在大学将这本书翻烂,里边的内容都实习过,有著作,你口头表达能力够强,你能够在面试时压服一切的考官。(能够有点夸大,但APUE肯定是圣经通常的读物,即使是Windows程序员也从其中罗致营养,Google创始人的案头书本,扎尔伯克的床头读物。)

这本书看完后你会对Linux体系编程有适当的晓得,晓得Linux与Windows渠道间开发的区别在哪?它们的优缺陷在哪?我的总结如下:做Windows渠道开发,很苦,微软的体系API总在扩容,想运用最新潮,最高效的功用,最合适当时流行体系的功用你有必要时刻学习。Linux不是,Linux体系的核心API就100来个,记忆力好彻底能够背下来。并且经久不变,为啥不变,由于要同UNIX兼容,契合POSIX规范。所以Linux渠道的开发大多是专心于底层的或服务器编程。这是其长处,当然图形是Linux的软肋,但我站在一个开发者的视点,我无所谓,由于指令行我也能够习惯,假如有非常好的图形界面我就当作赏赐吧。别的,Windows闭源,体系做了啥你更本不晓得,永久被微软牵着鼻子跑,想想假如微软说Win8不支撑QQ,那腾讯不得哭死。而Linux彻底开源,你不喜爱,能够自个改,只要你技能够。别的,Windows虽然运用的人多,但运用场合单一,专心与桌面。而Linux在各个方面都有开展,尤其在云核算,服务器软件,嵌入式范畴,公司级运用上有广阔远景,并且兼容性一流,由于支撑POSIX能够无缝的运转在UNIX体系之上,不管是苹果的Mac仍是IBM的AS400系列,都是彻底支撑的。别的,Linux的开发环境支撑也肯定是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支撑。而微软除Visual Stdio套件以外,都不怎么友爱,不是吗?

假如你看完APUE的感触有许多,期望验证你的某些主意或经历,引荐UNIX程序设计艺术,世界尖端黑客将同你共享他的观点。
(4)挑选方向:网络,图形,嵌入式,设备驱动
网络方向:服务器软件编写及高性能的并发程序编写
如今是时分做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。
假如挑选网络,再细分,我对其他的不是他熟悉,只压服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技能含量最高的,也是底层的。需求许多的经历,看许多的书,做许多的项目。

我的观点是以下面的次序来看书:
1. APUE再深读 – 尤其是进程,线程,IPC,套接字
2. 多核程序设计 - Pthread必定得吃透了,你很NB
3. UNIX网络编程 – 卷一,卷二
4. TCP/IP网络详解 – 卷一 再看上面两本书时就该看了
5. 5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了非常好,努力,争夺看了
6. 6.Lighttpd源代码 - 这个服务器也很有名了
7. 7.Nginx源代码 – 相较于Apache,Nginx的源码较少,假如能看个大致,很NB。看源代码主要是要学习里边的套接字编程及并发操控,想想都激动。假如你有这些本事,能够试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运转在你的服务器软件上。

8. Linux内核 TCP/IP协议栈 – 深入晓得TCP/IP的完成
假如你还喜爱驱动程序设计,能够看看更底层的协议,如链路层的,写啥路由器,网卡,网络设备的驱动及嵌入式体系软件大概也不成疑问了。
当然通常的网络公司,就算baidu级别的也该坚决果断的招聘你。仅仅看后面这些书需求时刻与经历,所以35岁曾经办到吧!换岗到给你将来的当地!
图形方向,我觉得图形方向也是很有出路的,以下几个方面。
1. Opengl的工业及游戏开发,国外较老练。
2. 影视动画特效,如皮克斯,也是国外较老练。
3. GPU核算技能,能够运用在浏览器页面渲染上,GPU核算资源利用上,由于开源的缘由,有许多的文档程序能够参考。假如能进火狐开发,或谷歌做浏览器开发,大概会极好 。

嵌入式方向:嵌入式方向没说的,Linux很重要。
把握多个架构,不只X86的,ARM的,单片机啥的也有必要得懂。硬件不明白我预见你会死在半路上,我也想走嵌入式方向,但我觉得就校园教授嵌入式的办法,我连学电子的那帮学生都竞争不过。规劝我们,必定得懂硬件再去做,假如走到嵌入式运用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,不然你会很惨的。

驱动程序设计:软件开发周期是很长的,硬件不一样,很快。每个月诞生那么多的新硬件,怎么让他们在Linux上作业起来,这是你的作业。由于Linux的兼容性极好,假如不是太低层的驱动,根本C言语就能够搞定,体系架构的影响不大,由于有体系支撑,你能够做些许更改就能够在ARM上运用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件常识的需求很高。能够从事的方向也许多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。

     第一天,就简略介绍到这儿。。。
    纵情等待第二天的Linux的装置,敞开Linux的学习之路。。
    不喜勿喷。菜鸟记载自个的学习之路。。。共求同道中人一同学习辅导。。


xubeiping0930 发表于 2014-8-19 20:41:48 | 显示全部楼层
受教颇多·············
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-4-29 11:02 , Processed in 1.031243 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表