你好,一个嵌入式工程师回答你的提问,关于Linux开发的入门,我的回答如下:
一、给自己定位一个领域
笼统的说Linux开发,那个涉及的面太广了,从服务器、到大数据、到常用的嵌入式系统还有桌面软件,甚至是Android的开发也是Linux系统下的。所以第一步,找准一个你要学习的领域,比如嵌入式或者PC软件。
二、一般Linux开发的入门建议
1.先大体了解一下Linux操作系统,知道它包含哪些组件,有什么功能,大体的操作怎样的?这一步推荐《鸟哥Linux私房菜》,不要太仔细读,大体了解一下;
2.定位Linux开发层级,比如做应用开发或者系统内核本身开发,又或者是底层驱动开发等等。越是接近硬件,越要学习更多的微机原理和接口技术,以及常用的各种总线协议。
当然,不管做哪一层,Linux的多进程,多线程,内存管理,文件系统等都要了解一下,推荐《Linux应用开发完全手册》 ,做驱动的推荐《Linux设备驱动开发详解》。
三、Linux的学习进阶
等Linux的基础知识和操作理解了,应用开发相关软件也会设计了,最终都要走进内核的,Linux的魅力完全在于有一个完美强大的Kernel支撑,去解读一下源码的架构和设计之美吧,推荐《Linux内核源码分析》、《Linux源代码情景分析》和《深入理解Linux内核》等书籍。
总之,对于Linux的学习应该从一般概念认识入手,先了解它的轮廓和基础知识,然后弄清楚基本的软件开发,接着试着了解内核和驱动知识,进而走向内核源码分析。
以上是我个人的建议,希望对你有帮助。
欢迎关注@瓶凡科技营 最新科技资讯解读,还有嵌入式系统开发的经验分享,关于嵌入式软件的问题可以留言,共同探讨。
怎样在Linux下编程?需要什么技术?
前言
分享好玩科技,探索未知世界。大家好,我是drinkingcode。针对如何学习Linux编程,分享一下作为过来人的经验,希望可以帮助到大家。
环境搭建
如果要在Linux下进行编程,那么首先我们需要有Linux操作系统的环境。通常的做法是下载并安装VMware,然后在VMware下安装Linux操作系统的发行版,比如Ubuntu,CentOS等。当一切安装就绪后,你就拥有一个Linux的编程环境了。如果大家需要相关资料,可以关注私信我,百度网盘分享给大家。(仅供个人参考学习)
入门
掌握C语言
环境搭建好之后,接下来我们需要掌握一门编程语言。由于在Linux下提供的系统API都是针对C语言的,所以想要进行Linux编程,就需要掌握C语言的基本使用。针对C语言的学习,给推荐大家一本《C和指针》
熟悉Linux命令
在Linux下编程,很多时候都是通过命令来进行操作的,ls命令,cd命令等。所以掌握常用 的Linux命令之后,你就能更方便地去使用Linux系统。对于Linux命令的掌握,大家只需要选择一些常用的命令来进行学习就可以,至于平时不常见的命令,到时遇到再去选择性学习。在这里推荐一本学习Linux命令的书籍《鸟哥的Linux私房菜》基础学习篇
熟悉vim
有了前三步的基础,接下来,我们就可以手动来写C语言了。在Linux下,C语言的编辑器为vim。但是想要在vim上编写代码,就需要了解vim基本命令的使用,因为vim的使用使用vim命令来进行交互的。当我们熟悉了vim命令的使用后,我们就可以自由自在地在Linux下编写我们的C语言代码啦,然后用gcc编译器编译我们写好C语言代码的文件,就可以得到可执行程序,运行可执行程序,就可以看到输出结果。
进阶
熟悉系统API
在入门阶段,我们掌握基本开发Linux程序的流程。但是在入门阶段中,我们编写的应用还不具备太大的实用意义,因为我们编写的程序并没有借助系统的API。所以在进阶阶段,我们需要做的就是借助Linux系统API,以便我们编写的应用发挥更大的威力,更具有实用的价值。
在Linux系统中,比如读取一个文件的内容或者把服务器建立一个连接等,都需要调用Linux系统API才能实现。如何掌握这些API呢?在这里,推荐搭建阅读《UNIX环境高级编程》,里边介绍了文件I/O,进程间通信等知识。这样我们就可以借助系统API让应用发挥更大的价值。
掌握Makefile
当我们编写一个程序的时候,为了让其层次更清晰,通常会把不同部分的程序放在不同的文件或文件夹中,但这些文件之后又是有相互依赖关系的,如何在gcc编译时告知他们之间的顺序呢?此时,就需要我们掌握Makefile的基本语法,然后用Makefile来告知gcc如何编译。在这里推荐一本《GNU make》。
总结
以上就是我说认为在Linux编程学习中几个比较重要的节点,予以罗列出来,希望对于想要学习Linux编程的同学有一定的借鉴作用。如果你喜欢我的文章或对你有帮助,欢迎点赞转发!
关注我,我是drinkingcode,分享好玩科技,探索未知世界!
为什么那么多程序员推荐linux,是不是在linux下开发效率高?
我觉得这是一个伪命题,我以及身边的朋友一致认为开发环境使用windows或mac比较好,实际上使用linux作为开发人员的操作系统的情况非常好,我们公司仅有以为大神使用linux。
如果说服务器一般采用linux,这个是有说法的。
1. linux服务器一般没有gui界面,通常来讲linux服务器只要1g内存就可以了,而windows内存2g都不一定带的动,没有gui的windows占用内存会少点,但估计没多少人会用。其次cpu方面,linux性能也比windows好。
2. 使用linux没有操作系统授权费用,而且在内存和cpu方面的预算达到最低,深受中小型创业公司的青睐,而大公司也不缺建设服务器的钱
3. linux的shell命令丰富,虽然如今powershell命令很很丰富,但shell命令出现更早,很多运维人员可以说熟练操作shell但不一定会使用powershell,所以使用linux更好招人。
4. linux比windows更加稳定,我使用过windows服务器和linux服务器,感觉稳定性上都差不多,也许是我的业务量不够大。
5. linux服务器资料网上有很多,windows则很少,意味着windows服务器遇到问题解决起来比较麻烦,比如你想在windows上启动某端口,或查看哪些端口在使用等。
最后与我而言,如果不考虑服务器费用,业务量不大的情况下,依然首先采用windows服务器。