你在图形窗口下吗,系统中别的图形程序运行没问题吧?Framebuffer加载配置了没?
你在图形窗口下吗,系统中别的图形程序运行没问题吧?Framebuffer加载配置了没?
我在Linux字符命令行模式下,写程序和调试程序的。
如同下面的这个测试例子,这里面也同样没有设置Framebuffer啊。可结果一样的,仍不能初始化成功。
我在本地机器加载linux自带的curses.h库,写程序调试过程没有出现任何问题。
难道配置Framebuffer是加载SDL.h库必须的一个步骤吗,应该怎么做呢
#include <SDL/SDL.h>
#include <stdio.h>
int main() {
printf("Initializing SDL.\n");
/* Initialize defaults, Video and Audio */
if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {
printf("Could not initialize SDL: %s.\n", SDL_GetError());
exit(-1);
}
printf("SDL initialized.\n");
printf("Quiting SDL.\n");
/* Shutdown all subsystems */
SDL_Quit();
printf("Quiting....\n");
exit(0);
}
如果你不是在XWINDOW下面,而且没开启framebuffer,就需要手动进行配置。配置完了才能运行基于SVGA的图形程序,根据启动管理器的不同,会有两种配置方法:
如果你用的 grub来引导系统,要修改 /etc/grub.conf文件,打开此文件找到类似这样的一行(这里的例子是Fedara core4的):
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet
在最后加上个VGA的显示模式,例如1024X768,256色的773号模式:
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/1 rhgb quiet vga=773
改过保存后,重启系统,进入Linux ,就能看出是否起作用了。
如果你用 lilo引导,就要改 /etc/lilo.conf这个文件 ;lilo的配置比较简单,因为vga=xxx是独立的一行。并且lilo.conf中有详细的配置参数,也就是我下面列出的那些模式号,就是来自 lilo.conf的。想打开哪个参数,就把vga=xxx前面的注释“#”号去掉就行,当然不能同时打开多个(要注意的是:如果改了lilo.conf后,得执行 lilo -v):
# Normal VGA console
# vga = normal
# VESA framebuffer console @ 1024x768x64k
# vga=791
# VESA framebuffer console @ 1024x768x32k
# vga=790
# VESA framebuffer console @ 1024x768x256
# vga=773
# VESA framebuffer console @ 800x600x64k
# vga=788
# VESA framebuffer console @ 800x600x32k
# vga=787
# VESA framebuffer console @ 800x600x256
# vga=771
# VESA framebuffer console @ 640x480x64k
# vga=785
# VESA framebuffer console @ 640x480x32k
# vga=784
# VESA framebuffer console @ 640x480x256
# vga=769