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

作为一个新人,怎样学好嵌入式Linux

发布网友 发布时间:2022-04-23 09:03

我来回答

1个回答

热心网友 时间:2023-06-26 15:54

很多同学接触Linux不多,对Linux平台的开发更是一无所知。 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员,  掌握Linux是一种很重要的谋生资源与手段。

下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化, 谈谈Linux的学习方法与学习中应该注意的一些事。

就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。  所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。

Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。  没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,  没有20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。

由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。 我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。  
虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。  
当然如果你的Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。

付费的软件不一定好。

首先,Virtual  Box很小巧,Windows平台下安装包在80MB左右,而VM动辄600MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。  所以,还是自己选。学Linux必读-Linux学习之路

如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Bai都可以, 英文好的可以直接看官方文档。  现在介绍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从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。

1、Linux基础

你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。 如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,  而是满世界的去找,去问,如何用命令行解决你的问题。

在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库, 里面是你积累的各项知识。

2、Linux平台的C/C++开发,同时还有Bash脚本编程[JAVA]

再下个阶段,你需要学习的是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我不喜欢,就不推荐了,附一个别人的书单:java 入门书籍。  
工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),  
汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。

如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。  不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的, 不可能像Bash,VIM这些神品一样。 所以做不好干脆离开。

3、UNIX环境高级编程(作者英年早逝,第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、选择方向:网络,图形,嵌入式,设备驱动

网络方向:服务器软件编写及高性能的并发程序编写

现在是时候做分流了。 大体上我分为四个方向:网络,图形,嵌入式,设备驱动。

如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。 相对来说这是网络编程中技术含量最高的,也是底层的。  需要很多的经验,看很多的书,做很多的项目。

我的看法是以下面的顺序来看书:

APUE再深读 – 尤其是进程,线程,IPC,套接字

多核程序设计 - Pthread一定得吃透了,你很NB

UNIX网络编程 – 卷一,卷二

TCP/IP网络详解 – 卷一 再看上面两本书时就该看了

5.TCP/IP 网络详解 – 卷二 我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了

6.Lighttpd源代码 - 这个服务器也很有名了

7.Nginx源代码 –  相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。

Linux内核 TCP/IP协议栈 – 深入了解TCP/IP的实现

如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡, 网络设备的驱动及嵌入式系统软件应该也不成问题了。

当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。 只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!

图形方向,我觉得图形方向也是很有前途的,以下几个方面。

Opengl的工业及游戏开发,国外较成熟。

影视动画特效,如皮克斯,也是国外较成熟。

GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好  。

嵌入式方向:嵌入式方向没说的,Linux很重要。

掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。 硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,  我连学电子的那帮学生都竞争不过。 奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,  不要碰上像Nokia,Hp这样的公司,否则你会很惨的。

驱动程序设计:软件开发周期是很长的,硬件不同,很快。 每个月诞生那么多的新硬件,如何让他们在Linux上工作起来,这是你的工作。  
由于Linux的兼容性很好,如果不是太低层的驱动,基本C语言就可以搞定,系统架构的影响不大,
因为有系统支持,你可能做些许更改就可以在ARM上使用PC的硬件了,  所以做硬件驱动开发不像嵌入式,对硬件知识的要求很高。

可以从事的方向也很多,如家电啊,特别是如索尼,日立,希捷,富士康这样的厂子,很稀缺的。

学嵌入式要什么基础?学嵌入式要学什么?

要学好嵌入式linux需要做些什么:第一,要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中,你会学到更多的知识,学习linux,更要学习一种geek的精神,python之禅中也说过:以总结分享为荣,以跪*求其解为耻;第二,要多动...

我想学习嵌入式系统,但是不知道怎么开始学习,我是个小白,有一点c语言...

11)TCP/IP 协议栈要学,所有的嵌入式高手都得掌握的东西,这是区别好手与菜鸟的不同之处之三。12)有了这些东西,拿下 Linux 驱动已经不再话下,需要你去学习 Linux 内核源代码和Linux驱动程序设计,这是一个技术升华。13)音频、视频的解码译码技术你得学。14)各种 IC ,各种 bootloader 你能够...

成为一名嵌入式Linux开发工程师需要学习哪些知识?

一:C语言 嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,通过大量编程实例重点理解C语言的基础编程以及高级编程知识。包括:基本数据类型、数组、指针、结构体、链表、文件操作、队列、栈等。二:Linux基础 Linux操作系统的概念、安装方法,详细了解Linux下...

学好哪门语言是学好嵌入式Linux的前提,java,c,c++?

怎么样学好嵌入式LINUX? 要学的东西有C语言、linux常用命令、shell程式设计、g和gdb工具、程序执行绪、socket等等 最主要的还是多写程式多问问题 C语言加嵌入式LINUX的 自学教材 C语言,谭浩强,入门; linux基础学习; arm介面技术; linux—C程式设计; linux核心完全剖析; linux驱动开发...

怎样学好嵌入式,需要循序渐进和坚持不懈

单片机掌握proteus仿真,不买硬件也可以学习。学习单片机,一是掌握单片机的各种资源,二是掌握常用元器件和总线。嵌入式操作系统学习嵌入式系统,如linux或者wince下的编程,这些对以后做应用的编程很有帮助。应该对操作系统有所了解,这对你对硬件和软件的理解,绝对有很大的帮助。应该把系统的管理理解一下...

学嵌入式需要什么基础?

应用层部分:I/O、Linux库的制作和使用、Linux并发程序设计、网络编程、数据库开发、综合案例等等底层核心部分:ARM编程、硬件接口编程、物联网基础、系统移植、内核开发、驱动开发等项目实战:会让学生以分组的形式完成2个项目作为项目毕业考核。学习嵌入式要什么基础?重要的还是先看看C语言高级编程。很多...

如何快速学习嵌入式Linux课程?

1.C语言 自上而下的学习首先是写代码,写用户的应用程序。每种语言的使用目的是不同的,嵌入式的语言是C语言。所以首先要学习C语言的基本语法,C库提供了大量的函数,我们可以调用以实现一些功能。所以还要熟悉C库的常用函数。C语言一定要学好,它是基础。Linux内核大部分也是用C语言实现的。2.Linux...

如何学好嵌入式?怎么样才能学好嵌入式?

1.嵌入式应用编程 2.嵌入式Linux并发程序设计 3.嵌入式网络编程 4.嵌入式数据库开发 5.嵌入式Linux应用综合项目 6.C++,QT开发 三、嵌入式底层 嵌入式的底层的学习是在学习嵌入式必须涉及到的,如何把你的程序在开发板上进行,就会接触系统移植,内核开发等,这也算是嵌入式顶层的东西了,所以你需要...

做linux嵌入式入门需要学什么

嵌入式Linux开发往往是ARM+Linux路线,所以深入学习你可以尝试以下路线:(1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:谭浩强的C语言程序设计很不错,《The C Programming Language》 这本经典的教材是老外写的,也有...

我是一个嵌入式初学者,请问我要学哪些东西?希望大虾给一些具体的学习流...

第一,你要学习嵌入式的话要考虑你是什么专业,如果大学里没有学过现在学习非常难的。而且门槛较高就业非常有压力,因为这个行业对于工作经验要求很高,都不喜欢带新人。最好能有认识的人教你帮助你。要不工作很难找。第二,你真要学习的话首先要确定一个操作系统,比如linux,装上一个虚拟机。第一...

嵌入式为什么要学linux 嵌入式开发为什么用linux linux嵌入式入门 嵌入式linux学什么 嵌入式到底该怎样学呢 嵌入式Linux有哪些 嵌入式与linux 嵌入式必须会linux吗 韦东山嵌入式linux
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
考拉电台萝莉的犯二生活主播叫什么 进门放什么最旺家宅 驾驶证明年十月份到六年了,非得要到到期前九十天才能换证吗? 驾驶证9月到期,提前换证在哪里办,要准备带哪些办证? 我的驾驶证到9月30日到期,请问什么时间去审证? 我家里三个女生,两个姐姐都结婚了,现在男朋友叫我去他那里过年,他说明... 塘沽人流一般要多少钱 我刚买的小米3 16G的,显示总共可用内存是13.46G,请问这正常吗?系统占用... 你好,我想请你帮忙翻译地址行吗? 金华四中长湖校区地址 ipad哪一款可以玩和平精英还可以开极限帧数,二手的价格要便宜 9.6厘米等于几分之几米? 我的嵌入式linux目录为何为乱码 振动传感器种类有哪些?选择的依据是什么? 为什么华为Mate30开不了超高帧数?王者荣耀 惠普电脑找不到启动设备是怎么回事? 测量震动的应该用什么传感器呢? 最近想学习嵌入式linux编程,能帮我推荐几本经典书籍吗 9点6等于几分之几 如何辨认xbox360的手柄是否是原装手柄? 王者荣耀怎么开到90帧率 9.6化成分数是几分之几? 振动传感器选择类型介绍 XBOX360 slim 全新 原装手柄 怎么鉴别? 嵌入式linux下面有没有完美的中文输入法解决方案 华为mate20打游戏什么卡不卡? ps3原装手柄是不是比组装山寨的手柄明显好用?我机器买的时候就是二手的,手柄自然也是垃圾的,玩射击 电脑找不到开机设置怎么办 什么是振动位移传感器,振动速度传感器,振动加速度传感器? 请教一个嵌入式linux中mount中文目录的问题 电梯电机振动频率测量有什么好的传感器介绍? 9.6元写成几分之几 电脑找不到开机设备 9.6是百分之多少 惠普电脑提示找不到开机装置怎么办?可以进去BIOS设置 有什么传感器可以测量高频的振动物体的振动频率吗? 为什么电脑开机找不到启动设备 交易密码是什么时候设置的 hp笔记本,开机“找不到启动设备,请在硬盘上安装操作系统,硬盘(3F0),F2 系统检测”怎么解决? 9.6%可以估算成几分之 轴振动的检测要用到什么传感器? 6.2化成分数是几分之几 振动传感器结构与分类· 嵌入式linux学习是什么意思啊? 请问下,轴振动检测要用什么传感器测? linux 和嵌入式linux 2.6化成分数是几分之几? 电机振动监测传感器哪种比较好? 电脑找不到开机启动设备 12除以4分之5?