现在开始,着手在Linux环境下建立工程。我的编程环境是RedFlag5.0+Eclipse+GCC+QT。
# * 代码编辑 *
虽然有Eclipse,并且QT也提供了很好的插件给Eclipse实现基本的可视化编程。不过Eclipse的速度实在是太慢了,所以,基本上所有的工作都是在sh里面进行的。代码编写几乎完全用vi(vim)。
vi的功能实在是太强大了。不知道这个世界上还有没有更强大的编辑器,在命令行模式下,能够语法标亮,处理多个文件,搜索,替换。各种编辑模式,实在是叹为观止。vi可能比dos时代的Borland公司的招牌软件sk更加精致和高效。
# * 编译 *
从学习编程以来,我似乎从来没有手工建立过Make文件。最早的时候,编程工具我似乎用的就是TC2.0,文字模式的集成开发环境。现在已经不太记得里面的工程文件是怎么建立的了。
不过在纯命令行模式下工作确实比较爽。有一种控制全局的感觉。所有的编译细节,每一个编译参数虽然仍然不是你自己亲手控制的,但是至少你可以看到。
看着编译的屏幕输出从屏幕上像雨水一样流过,那是一种怎样莫名兴奋的感觉啊。
# * 新的学习模式 *
开源的性质使你可以接触到大量优秀的代码,昨天,公司需要一个CRC16的函数,之前我已经做过一个了,不过多项式不符合要求,然后在Linux下:
cd $gcc-include-dir
dir > dir
vi dir
/crc
然后就找到了几组crc的标准实现。从很早的时候我就被告知如果要提高编程水平,就要读大量的源代码,培养语感。这次终于找到了资源。
# * 一个新奇的项目管理方式 *
kernel的编译让我感觉很方便。上上周的时候吧,做Linux的驱动,在实际动手的时候,我并没有从书上看到如何把你的模块添加到Linux内核里。但是,经过简单的查看,我发现了各级目录下的Kconfig和Makefile,非常简单的处理之后,我的驱动代码就可以出现在 make menuconfig 中的图形化界面里了。工作中经常需要处理一个项目的多个版本的问题。CVS解决了一部分问题。不过,kernel的这种配置方式对这类工作可能是一种非常有效的手段。希望尽快可以弄清楚它的实现机制。
# * thizLinux的启示 *
thizLinux中有一个很方便的安装软件的工具 apt-get(在它所在的Linux分支里都提供有这个工具)。它的使用需要配置一个服务器。任何时候你需要什么软件,或者软件的源代码,只要运行:
apt-get install <关键字>
就可以从服务器上搜索所有匹配的软件。如果该软件需要基础的运行库支持,那么它会依据依赖关系为你自动下载安装所有的底层软件。太酷了。
# * Final *
看到这些美好的东西,实在是一种享受