Linux开发的一些我的经验

最近的文章老是谈论具体的技术,今天来和你们分享一下我的在Linux开发中总结的一些方法,仅供参考。若是存在没有涉及到问题,能够一同讨论。shell


忘记API的使用怎么办?ubuntu

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


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


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

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


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


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


如何减小重复性的工做?编码

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


诸如此类操做,咱们均可以总结本身的操做,提炼出参数和流程,编写本身的脚本工具。这就要求咱们至少掌握一种主流的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的问题上,选择本身适合的,就是最好的。