打印

开发人员 Linux 学习路线

[复制链接]
285|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lindoug|  楼主 | 2020-6-12 10:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
大家都知道,高等教育跟社会存在某种程度的脱节,具体体现在什么地方呢?
我想 Linux 应该是其中的之一。
我之前调查过,国内很少有大学把这门课程当成必修课来学习的,即使有,也是选修课。选修课嘛,大家都知道的,学分权重低,不占 GPA,所以这导致无论是学生还是老师都不够重视。
培训机构就完全不同了,社会需要什么职位,它就专门培养什么人才,所以还真别歧视人家北大青鸟,山东蓝翔出来的学生,就动手能力而言,他们有的时候还真是甩那些只懂理论的大学生几条街。
事实上,Linux 在社会中应用非常广泛,用 Linux 作为开发环境的职位不计其数,很多开发类的岗位在招聘的时候也是动不动就要求熟悉 Linux。
我在学校的时候从未系统地学习过 Linux,当时也并不清楚它的重要性,后来从实习到正式工作,先后也呆过几家公司,这才发现,居然每一家都会用到 Linux 开发环境。
也只有当你去面试的时候才会发现,学习成绩根本不是面试官考察的重点,编程能力,各种设备和工具的操作能力,还有项目经验才是最具吸引力的部分。
可以说,Linux 是就业市场上很大一块敲门砖。
所以,我建议计算机、通信、电子、自动化、微电子等工科学生都要好好学习 Linux,不要求每一个人都学习的很深入,但是 Linux 基本操作,编译和开发环境至少得熟悉。


下面是我总结的开发人员 Linux 学习路线,希望对大家有所帮助。


关于 Linux
Linux 因其开源,免费,可裁剪,被应用到很多领域,尤其是嵌入式设备上。
Android 系统内核也是基于 Linux 的。
另外还有各种服务器和工作站也是用的 Linux。
什么是嵌入式设备?
手机、平板,路由器,机顶盒,MP3, 物联网智能产品等。


Linux 学习路线
这是我画的一幅图,大家可以按此路线循序渐进地学习。
不过需要说明的是,第五项驱动开发和第六项嵌入式系统开发是并列的,也就是说,学习完内核之后,你可以选择从事不同的领域,当然嵌入式开发有时会包含驱动开发。
还有就是嵌入式开发包括硬件,软件和系统开发,假如只做硬件的话,你没有必要按照上述路线进行,系统级开发的话,前面的是必备。



  • 熟悉 Linux 系统,基本命令
    安装 Linux 系统,学会基本操作,熟悉文件系统,shell 脚本以及常用命令。

  • 了解程序开发过程
    搭建开发环境,了解 Linux 上程序开发过程。
    学会使用文本编辑工具 Vim,编译工具 gcc, as, 连接工具 ld, 调试工具 gdb, make 工具,会写 makefile。
    用 C 语言实现并编译自己的测试程序。

  • 尝试系统编程
    试着在 Linux 上用 C 语言进行系统编程,
    其中需要调用 Linux 系统库函数 (API)。
    例如,实现一个需要进行网络通信、操作文件的多线程/进程程序。
    以此深入了解 Linux 系统运行机制。

  • 学习内核
    上面学的差不多了,感兴趣的同学可以接着学习 Linux 内核。
    Linux 内核模块如下图

    这一部分内容比较深,能把它学透的基本就是大牛了,写个 OS 就不在话下了。

  • 驱动开发
    从这里开始,就不是必须的了。
    有兴趣的朋友可以深入学习。
    但是学习驱动开发无疑要把前面的都要学好。

  • 嵌入式系统开发
    学好 Linux 是嵌入式系统开发的基础。
    嵌入式开发包括很多方向,有硬件、软件,以及系统级别。
    硬件要学单片机,ARM、MIPS,DSP 等各种 MCU,Verilog, RTL, 具体就不多说了,跟 Linux 关系不太大。
    软件的话,需要了解交叉编译,以及嵌入式环境下 C 语言的特殊用法,例如 volatile、 位操作、寄存器操作、大小端、程序跳转等。
    系统级,要了解 Linux 内核裁剪、移植、编译、调试,还有 Bootloader 、设备驱动等。



使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

468

主题

472

帖子

17

粉丝