Linux(F7)下使用SDL开发

F7的软件包里边有SDL,如果你选择了一些基本的开发包,那么应该包含了SDL,就不需要了再另外安装了。可以使用下面的命令来查看SDL的安装情况:

rpm -qa | grep SDL

如果没有找到相应的RPM包,那么可以去这里下载。

SDL只包含了最基本的东西,更多的扩展可以在这里下载.其中常用的有SDL_image,SDL_ttf,SDL_mixer等,安装的时候需要注意带有devel的是开发库,而不带的是运行库,一般两个都需要安装。

安装好SDL以后就可以开始写第一个程序了,需要注意的是编译程序时应该加上SDL的链接,如:

gcc -lSDL -o hello hello.c

如果你还使用了其它库,那么也要加上相应库的连接:

gcc-lSDL -lSDL_image -o hello hello.c

下面就可以使用运行SDL程序了,在X下面应该不会有什么问题的,不过如果想在终端下运行可能就会出现问题了。一个先决条件是启动Linux时要在grub中加参数vga=0x314(后面这个根据你的需要可以调整),加这个参数后Linux终端就开始使用FrameBuffer了。

下面是不同分辨率、位数所对应的16进制数:

|640x480 800x600 1024x768 1280x1024

—-+——————————————
256 | 0x301 0x303 0x305 0x307
32k | 0x310 0x313 0x316 0x319
64k | 0x311 0x314 0x317 0x31A
16M| 0x312 0x315 0x318 0x31B

这样在终端下使用SDL的条件已经具备了,开始运行编译好的SDL程序(你可以在SDL官方网站上下载一些不错的例子),不过你很可能会得到下面的错误信息:

Enable to open mouse.

然而我在单用户模式下运行程序却没有这个错误信息。

google了一下,查到应该是鼠标设备文件在终端下没有权限被读取,这下明白了为什么在单用户模式下程序可以正常运行,单用户模式下本来登录的就是root,所以不会存在权限的问题。

于是在/dev/目录下找到了鼠标设置,我的F7中有下面三个文件:

crw—— 1 root root 13, 63 08-31 23:44 mice
cr——– 1 root root 13, 32 08-31 23:44 mouse0
cr——– 1 root root 13, 33 08-31 23:44 mouse1

经过我测试表明需要对mice这个设备文件权限进行修改:

chmod 0644 mice

把这个设备的的读权限给其它用户了,这样普通用户也可以在终端下正常运行SDL程序了。

OK,使用SDL开发的准备工作已经全部完毕!SDL的开发之旅就要开始了。

Update1:使用chmod改变mice的权限虽然可以暂时解决问题,不过重起电脑后,mice的权限又恢复到了默认值,貌似没有好的解决方案。

Comments

luguo: SDL是个不错的库,以前小看过一点点~~

luguo: 也发到西邮Linux上给大家看一下啊~~

cocobear: 已经转过去了。 不知道ubuntu安装好后SDL有没有包含进去? 娃又开始弄SDL了? 怎么是“又”!

cnenc: 居然没有发现,又是一个Linux爱好者。。 交个朋友吧。

nothing: 呵呵,又是一个“又” OK 你的网站似乎有些问题

cnenc: 不是有些问题。。。是问题多多。。。 我这段时间都没有空。。。

luguo: 打包下载已经添加: http://www.xiyoulinux.cn/blog/?p=45

Amankwah: 娃又开始弄SDL了?

坚持原创技术分享,您的支持将鼓励我继续创作!