Linux开发的一些个人经验

最近的文章总是谈论具体的技术,今天来和大家分享一下个人在Linux开发中总结的一些方法,仅供参考。如果存在没有涉及到问题,可以一同讨论。


忘记API的使用怎么办?

Windows开发有MSDN可以参考,Linux同样有开发者手册可以使用,这就是man命令,Linux的man手册总共有9个章节,每个章节包含的内容可以通过man man命令进行了解。


对于Linux应用开发,常用1,2,3三个章节,分别对应shell命令手册,系统调用手册和库调用手册。例如我们查看系统调用open函数,可以终端输入man 2 open进行查看。其中会包括对接口的介绍,需要包含的头文件以及参数说明等等。man手册非常详细,也是大家学习API的重要资料。


开发使用C标准库函数还是使用系统调用?

在Linux开发时,有时候既可以使用系统调用也可以使用C语言标准库的函数,例如,打开文件的系统调用是open,C语言标准库则提供了fopen函数。那么我们到底该使用系统调用还是标准库呢?


如果能够保证程序只会在类UNIX系统下运行,能够使用系统调用的场合,应该优先使用系统调用。不可否认,使用系统调用会增加开发负担,需要我们考虑很多细节问题,但是标准库会做很多我们并不清楚的额外操作。例如文件io,标准库默认会进行缓冲,而标准库默认无缓冲。为了避免不必要的麻烦,还是使用系统调用更好,这样我们可以更好地掌控程序的行为,还能获得更好的性能。


但是,我们的程序可能会在不同的平台运行,例如Windows和Linux下,那么,C语言标准库可以带来很好的可移植性。这时候,我们要尽可能的使用C语言标准库的函数来进行开发。不得不使用系统调用的地方,可以使用宏定义进行区分。


如何减少重复性的工作?

这里的重复性工作不仅仅指编码工作,还包括我们使用电脑进行开发相关的各种操作,比如复制文件,打开开发软件,进入一个目录做一些操作然后到另一个目录执行另一些操作,提交代码到版本管理等等。


诸如此类操作,我们都可以总结自己的操作,提炼出参数和流程,编写自己的脚本工具。这就要求我们至少掌握一种主流的Linux下的脚本语言,如Shell,Python,Perl,Ruby等。养成编写脚本的习惯,可以使用一个命令完成自己常用的操作流程,可以减少很多点击鼠标和切换目录的操作。


什么时候使用终端?

现在Linux的发行版都会提供一个桌面环境,桌面环境十分方便,这主要面向使用ubuntu的普通用户,对于开发者,在必要的时候,还是使用终端会更好一些。例如,复制一个文件,使用终端一个cp命令解决。所以,个人建议,如果做开发,尽可能使用终端命令来完成自己需要的操作。


我们没有必要刻意学习什么命令,需要的时候,通过搜索和man来了解相关命令的使用方法,常用的命令自然会熟记于心。或者将复杂的使用写进一个脚本,以后执行脚本即可。


是否应该在Linux系统下工作?

如果只是做Linux开发,建议最好在Linux下工作,不太建议在Windows下编码,使用Linux虚拟机进行编译的行为。毕竟,在开发过程中,我们可能会遇到很多的问题,而这些问题直接在Linux下解决可能会更好。作为Linux开发者,最好锻炼自己使用Linux系统作为自己的第一操作系统,使用操作系统的过程,也是自己体会操作系统设计理念以及开发理念的过程。


当使用系统遇到问题的时候,尝试着在网上找找方法和工具,Linux是开源的系统,应当相信,在Windows下的工具软件,在Linux下都会找到免费的甚至是更好用的替代软件。例如Windows下载使用迅雷,但是Linux下有uget+aria2的组合,更关键的,它是完全免费的。借助于各种工具,你的Linux系统会异常强大。


如果不得不使用Windows下的软件,Linux下还有一个wine,使用wine可以在Linux下安装和运行Windows系统的软件。


是否使用IDE?

这是一个存在争议的话题,Linux开发的大牛级人物常常使用vim,emace等文本编辑器进行开发,熟练使用这种开发方式会带来极高的效率。


但是,对于vim这类文本编辑器,学习曲线比较陡峭,而且进行合乎自己习惯的配置又是一项大工程。不过,需要说明的是个人并不排斥使用vim,在工作中对于一些随手进行的文档编辑工作,都是使用vim解决的(这类问题我一般不用gedit)。


开发中,个人建议还是选择一个自己比较熟悉的IDE比较好,开发和调试都可以从IDE获利不少,而且能够减少代码中的缺陷。Linux系统下C/C++开发可以使用Eclipse和QtCreator。个人更偏向于使用Eclipse,原因很简单,插件丰富,支持的项目种类更齐全(makefile,automake,cmake等),可以进行交叉编译,而且还支持Java,Python等其他开发,需要的只是相应的插件。


总的来说,一切有利于提高我们开发效率,保证代码质量的手段都可以尝试,没有必要将自己限制在是否使用IDE的问题上,选择自己适合的,就是最好的。


你可能感兴趣的:(Linux应用程序开发)