解析Linux C/C++开发的难度到底在哪
经常被问到的问题, 如何学习C++, 如何学习Linux, 如何开始?
其实这个问题对于不同的人答案往往不尽相同,每个人所处的环境就不同。一个普遍的现象是有一些windows开发基础的人,他们想转Linux开发,那我就以这个点和大家讨论一下。
相对于Linux下的C/C++开发,在windows下的初学者往往容易入门,原因是visual studio, 这个强大的工具隐藏了很多的细节,好多人甚至以为拖拖控件,写写消息响应函数就是软件工程师了,这点在入门的时候尤为明显,出生牛犊不怕虎,信心满满。但是在这个强大工具的背后,隐藏了太多的东西,其中许多对于我们来说是非常重要的东西,比如Make, debug, call stack, 汇编代码,OS,哪些功能是系统提供的,哪些是工具提供的。所以很多人转过来的时候往往去类比以前windows的知识,但是又对不上,再加上无人指点,工作不用,可能慢慢的就会失去信心。
但是我认为作为一个有追求的软件工程师,如果不了解Linux, 我不认为他合格,当然此处无意挑起平台之争,实在是对于软件工程师而言Linux给了我们另一个选择,另一种思路,同时也提供了我们很多的轮子和一座宝库。
如下总结出一些建议,希望对Windows转Linux开发的朋友有所帮助。
1. 不要一开始就去搞内核,先装上系统用Linux来完成一些日常的事情,比如:看电影,拷贝文件,添加修改用户,文件,学学shell 脚本。
2. 试着用命令行去编译一些简单的代码,然后逐步增加难度,然后学学make。
3. 学习Linux的一些基础知识,找本书看看。
4. 尝试自己去写一些小的东西,动起手来,别总看书而不去实践,实践出真知。
5. 学习如何调试代码。
6. 学习主要的一些系统调用,文件操作,socket操作等等。
7. 学习简单的驱动开发,比如:串口驱动。
8. 学习...
9. 学习内核源代码。
另外在此需要指出的是,当你真正看透了Windows和Linux的软件开发的时候,你可能并不觉得他们有很大的区别,所谓殊途同归,说的可能就是这个道理,比如这两个平台的代码最后都会转换为IA32架构的指令序列,在转换过程中使用了不同的工具,反出来的汇编代码区别也不是太大。还是那句话,做同样的事情,每个人的切入点不同,所谓站得一山方望得另一山高,千万不要畏而不前,迟迟不敢动手。
希望此文对大家有所帮助。