我想,兴趣,是一个支点。
一直以来对linux的充满好奇,到底里面有什么神秘色彩是我想探究的。经常在一些linux社区里瞎逛,发现里面有许多人对linux表现得十分狂热,有些人甚至已经完全漠视windows的存在。我敬佩他们对linux的执著追求,也敬佩他们对待一种技术的开放心态,也许这正是linux赋予给他们的。某一个对跟linux有点关系的人,都愿意以linuxer自居,我也想这样。惭愧的是,因为工作暂不能接触linux,只能窝居在家时触碰一下,结果三天打鱼,两天晒网,事倍功半,心痛呀。
很多初学者在学习linux时都会茫然不知所措,不知道要做什么,更不知道怎么去做。大多数一时兴起,装一个系统后,动两下就不知道该干嘛了。找准方向很重要,至少先有一个大的方向,是在linux下应用开发呢,还是搞搞底层驱动,方向不同,学习的步骤就不尽一样。前者对计算机专业的来说是比较重要。我是学习电子专业的,对硬件电路熟悉一点,同时也能写一些不像样的破代码,那么对于先搞底层是有必要的,至少相对计算机专业的来说会是一种优势。
从今天开始,我将借签前辈走过的路,扎实走好每一步,并将详细记录这一过程,算是对自己的一种鼓励,也算是一种知识的沉淀,更希望和大家一起分享快乐,因为linux教会了我两个词汇:open和free。
要做底层驱动,首先要为自己搭建一个操作平台,这就是我们所说的linux开发环境,下面简单介绍:
1、安装一个linux操作系统
这是必须的,不要问我为什么了吧。但你可以问我要不要在windows下的虚拟机里安装liunx操作系统,我说完全可以,很多人也是这么建议初学者的,不过我个人觉得你会始终摆脱不了windows的影子,以后学习linux一定是个挫折的过程,在遇到一些挫折的时候,肯定有人就会发牢骚,觉得linux太不行了,老是出问题,此时自然会想到还是windows的好,最终打回原形。其实兄弟呀,是因为你还没掌握好linux的基本功,要很好驾驭它还需要付出努力,千万不可气燥,很会伤自信心的。所以我个人觉得竟然要学习一个与windows完全无关的东西,那么我们就应该在全新的环境下进行,不要在虚拟机上而是在PC机上安装新的linux操作系统,然后在里面慢慢学习感悟。遇到问题时,书籍和网络都是很好的助手(尤其是网络)。扯远了,回到linux的安装。您要选择一个linux安装版本,如ubuntu、fedora、debian、centos、红旗linux等等,太多了,它们各具特色但都属于linux这个大家族的。千万别为选择安装版本而不知所措了,它们的内核都差不多,最多只是因为内核版本号的差异而稍有不同,根本不影响你的学习。俗话说:萝卜白菜,各有所爱。有人就因为喜欢这个,就说这个好。就如我一直用fedora一样,很多人用会ubuntu。好吧,你个人去选择一个,然后安装上去。具体的安装过程我就不再罗唆了,书箱和网络上讲得太多了。
2、建立交叉编译环境
为什么要建立?因为不同体系结构有不同的指令系统,为了使您在一个平台开发的代码能够在另一个平台上执行,就需要交叉编译,从而使运行该程序代码的CPU能够被识别,这个过程就是一个语言翻译。我们在PC机上进行开发,要在ARM平台上运行,就需要它,明白了吧。
建立交叉编译一般涉及到到多个软件的安装,如gcc,glibc,binutils等等,这一过程比较繁琐,对于初学者来说很容易出错。所幸的是,很多公司或个人都已经为您打包做好了一切,发挥拿来主义精神,解压缩就是了,然后把它添加到系统环境变量中去就是了。
注意:不同体系结构,不同版本的linux内核都会用到不同的交叉编译器,所以您要慎重选择。以后我讲的只是针对地ARM体系结构,linux2.6内核。所以要建立与之对应的arm-linux-gcc交叉环境。我用的开发板是友善之臂的QQ2440,它也为我提供了相应软件包。
3、配置NFS服务
在linux下进行开发,NFS服务能够给我们带来方便快捷。通过使用NFS作为根文件系统,开发板的“硬盘”就可以变得很大,因为您使用的是主机的硬盘。
4、安装新的linux内核源代码
我们安装的linux系统本身就有内核源代码,位于/usr/src目录下。但请注意,不要把这个源代码树用于开发,更不可对其进行修改,这样很可能系统崩溃。所以需要安装新的内核,专门用于开发,不会对系统千万有害影响。那么我们就得获取新内核源代码,linux官方网站上有。我用的开发板商也为我提供了,并且与前面的交叉编译器一致,拿过来用就是了。安装它只需要简单的tar命令就可以了,然后还需要配置(mak menuconfig)和编译(make)。
好了,我们基本上已经搭建好了开发平台,接下来就是开始动手进行底层驱动开发了。
阅读(1664) | 评论(0) | 转发(0) |