当GM向我拍下一张使用Linux与C的游戏单子时,眼前顿时冒出了兰波的名篇.......
幸好,一切堕落都有一个美好的开始:
1.另类唯美的SuSe Linux 10 Windows与Linux的百年大战中,桌面系统这块向来是Windows最高枕无忧的铁桶江山。不过这次,另类的Suse 在上面轻轻的撬了一块砖。
首先是界面,选了KDE、Suse-default的外观主题后,在我这样的美学形式主义者看来,Suse PK WinXP丝毫不落下风,对上Win2000就是稳胜。
更重要是Suse的易用性也做得很足。每次点右键总有贴心的功能出现,WinXP可能得装上Power Toys之类插件才能相若,还有美丽的Yast控制面板,还有所有软件包的自动在线更新。
而且,Suse带的一系列K字头的软件也不含糊,写字板Kate可以匹敌UltraEdit,Konsole是很好用的console,KDE 即时通信能同时连通MSN等im软件.....虽然应用的数量还是不够,但现在google和它代表的主义横行,越来越多应用移到了互联网上,只要FireFox持续更新,微软在桌面应用上的优势就会被稀释。
不过,Suse Linux 应该算是Linux中的一个另类。看一下Redhat的fedora core 4,就能发现丫还很忠实的保留着Linux桌面难看难用的传统。不过这个另类唯美者可没兼有低调的美德,google一下就能看到"Novell扬言Suse 9.3要让Windows下课" 的宣传。我觉得,那至少先要解决桌面程序的运行速度问题。
2. 万年不变,诡异莫测的make
虽然Suse很好,但很快又要面对make这个家伙。在我经历里,能够顺顺利利输完下面这三行指令,然后安装完毕的程序太稀有了。
>./configure
>make
>make install
这次要装一个使用SDL库的游戏,果然又是如此。
首先报找不到libSDL_image.so,结果发现原来/usr/lib里这个so带了版本号:libSDL_image_1.2.so,加link搞定。然后又报找不到SDL_image.h,跑去SDL主站下了源码补上...
都2005年了,问题还是这样层出不穷,飘忽不定,团队里如果没有久经摔打的老将,经常会被搞得手足无措,目光呆滞。
3.复杂化的趋势让人很害怕的内核模块HelloWorld
因为要直接操控IO口,所以稍稍看一下内核模块的东西。天降一本〈Linux 设备驱动程序 2nd〉中文版,hello.c 很简单,而且gcc -c hello.c 就能完成编译。
但轮到我gcc的时候,却出来两屏的错误。没想到自己的人品值急降到这个程度,愣了好一阵,才发现这本"中文版"讲的是linux kernel 2.4的事情,到2.6已经变天了。只好重新emule一本讲kernel2.6的第3版,再配合google,才明白2.6里hello.c变了,还需要预装kernel-devel,更需要使用新鲜kbuild系统来编译:
首先写一个不明所以的不完整Makefile:
obj-m := hell.o
然后用这条指令来编译,才得出新的hello.ko 文件:
make -C /lib/modules/`uname -r`/build M=`pwd` modules 更倒霉的是我一开始用的Suse 9.3居然没带kernel-devel.rpm,搞得我又要用kernel-source,配置、编译一遍内核....
都一把年纪了,还要为了个helloword被这样拖着满场飞奔,实在是糟糕透顶的经历,而且,2.4->2.6里复杂化的趋势更让我还在门外就觉得有点凉意。
如果程序世界不是越来越简单,而是越来越复杂;越来越多东西不能靠过去的经验发挥同理可证的作用而需要完全重新学习,那我们这些老家伙的饭碗不是很危险吗???