回忆过年,之一

感觉这过年越过越没有年味了。
记得小时候过年是非常非常开心的事,总是盼着它的到来。学校放假没几天,村子里就开始热闹起来了。
首先是打年糕,那时打年糕是好多人家聚在一起,各家把加工好的糯米粉集中到一起,然后各家按自己要打年糕的数量,带来柴火,工具是灶头,蒸桶,石臼,石锤。
打年糕的过程并不复杂,先是在糯米粉里加水,这加水其实很讲究的,加多加少都会影响口感。接下来就是蒸糯米粉了,有一个专门的蒸桶,在一个大锅子上放一圈‘肠子’,其实就是用布缝成一个圈,里面灌上木屑,起到防止漏气的作用。
蒸桶就放在‘肠子’上,蒸桶里放上一层纱布,这样就可以往蒸桶里放糯米粉了,一层一层慢慢地撒……当然灶头下有人在烧火了。没多久,一蒸桶年糕就好了,这时把蒸桶拿下来,倒入石臼就,就开始真正的打年糕了,当时大人们的吆喝声、喊小孩闪开的热闹氛围很是难忘。
打好后把年糕从石臼里拿出来,扔到石板上,不要怀疑我的用词,真的是扔上去的,因为这是年糕还非常烫手,慢悠悠的,还不把手给烫坏了?
石板边上已经有大人准备好了,他们的工作就是把一团年糕摊成饼状,大人们都把双手沾上水,一是为了避免烫到手,二是不至于手上粘满年糕,而且速度要很快,不然年糕硬了就很难摊开了。这是往往有孩子在边上看,不为别的,就是想吃‘糕头’,就是刚刚打好的年糕,大人们都为很大方的揪下块来给孩子们,记忆中的糕头是那么的香,呵呵

今晚国足痛宰棒子

在中国足球打黑风暴中,中国足球似乎也到了最危难的时刻,今晚的胜利可以说是对中国足球的、中国球迷的一剂强心剂。

今晚,通宰了棒子,破除32年来的恐韩,进球更是是一个比一个精彩,特别是邓卓翔得球后精彩突破,让球迷看到了新的希望;今晚的胜利,让原本心情复杂的中国球迷回归到了最原始的球迷,抛开了一切,我们看到的是一场痛快的比赛,一个振奋的结果!

为屠韩庆祝!为国足呐喊!

SDL简介及开发环境创建

SDL简介

 SDL是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、 MPEG播放器和其他应用软件。是为数不多的商业游戏开发公司使用的免费软件库之一。它提供跨平台的二维帧缓冲区图形和音频服务,它支持 Linux、Win32 和 BeOS。也不同程度地支持其它平台,包括 Solaris、IRIX、FreeBSD 和 MacOS。除了大量的服务,包括线程、独立于字节存储次序的宏和 CD 音频,SDL还提供了一个简单的 API,它允许您尽可能接近本机硬件。使用 SDL 有三重优点:稳定、简单和灵活。

  • 稳定   如果 SDL 不向 API 提供可靠的支持,那么那些爱好者和商业公司就不能使用它。因为使用了 SDL,就添加了错误修正并增强了性能,也就加强了 API 的强健性。就像内核开发是分步进行的,SDL 的开发也是分步进行的,其中一部分是可靠稳定的 API,其它部分是新功能和构思的沙箱。
  • 简单 SDL 被设计成一个简单的 API,以最少的代码实现您的构思。
  • 灵活 返回到上面的 Optimum 演示代码示例,只要移植到 SDL,并确定一些数据假设,那么根本不必改动代码,演示就可以在 Win32、BeOS 和 Linux 控制台上运行了。灵活性的另一方面体现在尽管代码完全是跨平台的,但不会把您和底层实现隔开。SDL 提供了函数 SDL_GetWMInfo(),该函数可以让您访问底层驱动程序的专用窗口信息。

在PC机上安装SDL开发环境


        和Linux下其他的软件库一样,SDL同样具有很强的移植性!我们所要做的就是在PC机上编写应用程序,调试通了以后就可以交叉编译移植到ARM板子上。到http://www.libsdl.org/download-1.2.php 下载SDL-1.2.13 (stable),然后进行安装,由于后面的交叉编译的是`tar.xx`
源码包,所以建议在PC机上使用`tar.xx`包进行安装。

        安装前请先查看是否安装有SDL,如果有请先卸载,如果你的系统使用的是`rpm软件安装包管理器`可以使用下面的命令进行查看:
# rpm -qa |grep SDL
如果使用`dpkg软件包管理器`,可以使用:
# dpkg -s SDL

下一步开始安装,这里以SDL-1.2.13.tar.gz 为例:
# cd /tmp
# wget http://www.libsdl.org/release/SDL-1.2.13.tar.gz
# tar zxf SDL-1.2.13.tar.gz
# cd SDL-1.2.13
# ./configure –help
使用上面这条命令用来查看`configure`选项信息,然后在这些选项中筛选必要的选项。
# ./configure –prefix=/usr/local/SDL –disable-video-x11 2>&1 | tee conf_log
`–prefix=/usr/local/SDL`是SDL的安装目录,此目录可以自己设定。
由于我的系统没有x11的开发环境,并且也不会用到SDL操作x11,因此我使用了`–disable-video-x11`这个选项。
参数`2>&1 | tee conf_log`的意思是把configure的信息输出到终端的同时写入到`conf_log`中,这个参数很有用,我们可以不用一直
 盯着屏幕看是否报错,等编译完成后直接查看`conf_log`这个文件即可,以后在`configure`、`make`等操作时,建议使用这个参数。
如果没有错误,执行:
# make 2>&1 | tee make_log
# make install
OK.PC 机上SDL安装完成。下面编译SDL的例子程序做测试:
# cd test
# ./configure –with-sdl-prefix=/usr/local/SDL
# make
# ./testwin
如果在屏幕上出现一张图片闪过说明SDL编译成功。

交叉编译SDL库


        由于ARM板的资源有限,不可能把所有的选项都开启,因此我们需要根据实际情况进行选择,下面的选项一般可以满足我们的要求:
# ./configure –prefix=/work/SDL_arm CC=arm-linux-gcc –host=arm-linux –target=linux –disable-debug –disable-cdrom –disable-esd –disable-arts –disable-arts-shared –disable-diskaudio –disable-nas –disable-esd-shared –disable-mintaudio –disable-nasm –disable-video-x11 –disable-video-dga –disable-dga –disable-video-ps2gs –disable-video-xbios –disable-video-gem –disable-video-opengl –disable-directx –disable-stdio-redirect –disable-osmesa-shared 2>&1 | tee conf_log
如果没有报错就可以进行编译:
# make 2>&1 | tee make_log
如果报错的话就需要根据出错信息调整一下`configure`的选项参数后编译(参数调整后没有必要`make clean`,直接`make` 就行了,make工具会智能的探寻哪些目标需要编译)。如果没有错误就可以`make install`了。
# make install

下一步测试交叉编译的SDL库是否能在ARM上正常使用。
交叉编译SDL的例子程序
# cd test
# ./configure CC=arm-linux-gcc –host=arm-linux –with-sdl-prefix=/work/SDL_arm
# make

如果报错的话,根据错误提示进行修改。

把交叉编译的库通过nfs服务器 共享到ARM板。
# cp /work/SDL_arm/lib/libSDL-1.2.so.0.11.2 $NFS_ROOTDIR
# cp ./testwim $NFS_ROOTDIR

做SDL库文件的软链接(SDL动态库使用libSDL-1.2.so.0这个名字提供服务)。
# cd $NFS_ROOTDIR
# ln -s libSDL-1.2.so.0.11.2 libSDL-1.2.so.0

执行下列操作:

启动nfs服务器
启动ARM
通过minicom 登录ARM
挂载nfs共享文件夹
运行例子程序`testwin`
如果运行成功就说明移植成功,失败的话不用心慌,认真的参考出错信息查找出错原因。

编写SDL程序

转载自CSDN

C 字符串分割函数strtok()的一些说明

调用方式:char *strtok(char *str1,char *str2);
功能说明:函数strtok()返回字符串str1中指向一个由str2所指定的字符或者字符串的分隔符的指针,当没有要返回的分隔符时,就返回一个空指针。

函数strtok()实际上修改了有str1指向的字符串。每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,函数用这种方法来连续查找该字符串。

例子:

#include
#include

int main( int argc, char *argv[] )
{
char *p;
char str[100]=”This is a test,and you can use it”;
p = strtok(str,” “); // 注意,此时得到的 p为指向字符串:”This”,即在第一个分隔符前面的字符串,即每次找到一个分隔符后,一个空(NULL)就被放到分隔符处,所以此时NULL指针指向后面的字符串:”is a test ,and you can use it”。

printf(“%s\n”,p); //此时显示:This
do
{
p = strtok(NULL, “,”); //NULL即为上面返回的指针,即字符串:”is a test ,and you can use it”。
if(p)
printf(“|%s”,p);
}while(p);

return 0;
}