OpenGL ES & SDL(转载)
2013-12-19 20:45
405 查看
1
这个学期在学习嵌入式,由于老师的高要求。所以我们几个水手必须要完成一个项目,名字就叫OpenGL
ES &
SDL的开发,这个东东以前从来没有搞过,加上网上资源又非常少,所以费了九牛二虎之力终于现在把这两个分别在开发板上运行成功。
以防忘记,所以现在做个记录,也是为了后人着想。故自己会做的尽量详细。
先提一点:我们用的开发板是255的。
首先关于Opengl
ES的,我们在网上搜到了一个大牛的博客,上面介绍的很详细,非常感谢这位大牛,才使我们的工作顺利进行,所以为了表示对这个大牛的感谢和学习,故自己也想造福后人。在次就不多做介绍,现链接如下:
http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!274.entry
除了链接,我也把他写的内容转到这里来:
这两天在ARM上跑了一个OpenGL,应该说是OpenGL|ES的软件包,虽然我觉得可能最后我不会使用这个软件包,但是还是记录下来以备忘记。
先全局介绍下,首先,什么是OpenGL和OpenGL|ES。OpenGL是一套绘图函数的标准,OpenGL|ES是OpenGL中针对嵌入式系统的一套函数子集。OpenGL|ES的官方是http://www.khronos.org/opengles/,上面有更多的信息。需要注意的是,OpenGL仅仅是标准,而如果你要使用OpenGL,则需要找到可以实现这些OpenGL标准函数的程序库或源代码。目前,在ARM这种一般没有图形加速器的平台上,OpenGL|ES的实现都是靠软件的。主要的OpenGL|ES程序库有:Klimt,Vincent
(ogles),TinyGL等。Google一下,可以看到它们的主页。这些实现基本上都是基于X11、Qt/E这样的窗口平台的。我用的软件包叫做PicoGL,它是TinyGL的一个分支,不同之处就在于PicoGL支持直接在Framebuffer上输出图像。PicoGL是一位台湾同胞写的,他的主页http://jserv.sayya.org/。但是这个软件包的源码极其难找,我用的是一位很牛的同事搜到的,地址是http://people.openmoko.org/jserv/graphics/picogl-20051108.tar.bz2。
要使用这个软件包还必须有支持软件浮点的交叉编译器,我们一般用的arm-linux-gcc
2.95.3/3.3.2/3.4.1等都不支持软件浮点,这需要我们重新编译一个。编译一个交叉编译器,引用Crosstool作者Dan
Kegel的话,used to be a scary prospect,requiring iron will,days if not
weeks of
effort……幸好有Crosstool这个工具,如果你的机器好网速快,输入个指令,差不多1个多小时就可以编译出来。crosstool的主页http://kegel.com/crosstool/,下载地址http://kegel.com/crosstool/crosstool-0.43.tar.gz。
首先制作交叉编译器,先以root用户登陆,建立交叉编译器安装目录,而且把目录所有者改为你的普通用户
# mkdir /opt/crosstool
# chown /opt/crosstool lxz
# chgrp /opt/crosstool users
然后以普通用户登陆,解压缩和安装
# tar xvzf crosstool-0.43.tar.gz
# cd crosstool-0.43
# ./demo-arm-softfloat.sh
crosstool会从网上下载需要的源码包,然后编译,最后安装。crosstool相关的资料可以看http://kegel.com/crosstool/current/doc/crosstool-howto.html。然后在/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu里面就会有支持软件浮点的交叉编译器了。
然后解压缩picogl,修改picogl的代码。
首先是picogl的一处bug,在backends/vesafb/tk.c的第一行增加宏
#define _FB_TK_
然后把backends/vesafb/glx_impl.h里面的
struct fb_fix_screeninfo FixedInfo;
struct fb_var_screeninfo VarInfo, OrigVarInfo;
修改为
#ifdef _FB_TK_
struct fb_fix_screeninfo FixedInfo;
struct fb_var_screeninfo VarInfo, OrigVarInfo;
#else
extern struct fb_fix_screeninfo FixedInfo;
extern struct fb_var_screeninfo VarInfo, OrigVarInfo;
#endif
这是因为有好几个文件调用了backends/vesafb/glx_impl.h,如果不这么改,会出现多重定义错误。
然后,为了让你的程序使用picogl更方便些,最好再改个地方include/GL/glx.h
#include GLX_IMPL_HEADER
改为你喜欢的方式,指向backends/vesafb/glx_impl.h
修改backends/vesafb/tk.c中,initialize_fbdev函数有关VarInfo的设置,改为适合你的LCD的。
然后配置
# cd PicoGL
#
CC=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc
./configure --with-backend=vesafb --host=arm-softfloat-linux-gnu
--prefix=/home/lxz/builtPicoGL
说明下,CC=设置交叉编译器的位置,--with-backend=vesafb指定使用FB作为显示设备,host=arm-softfloat-linux-gnu设定交叉编译,--prefix=/home/lxz/builtPicoGL设定编译后库和示例程序安装位置。
然后
# make
# make install
在/home/lxz/builtPicoGL/lib里就有PicoGL的库了,把动态库文件拷贝到arm-linux根文件系统的/lib里面,把/home/lxz/builtPicoGL/bin里的程序拷贝到arm-linux文件系统的任何地方,然后制作和烧写文件系统映像(或者使用NFS),执行,就可以看到结果了。
当你编译一个使用PicoGL库的程序(假设叫做hello.c)时,需要输入
# arm-softfloat-linux-gnu-gcc -c -I /home/lxz/PicoGL/include -I
/usr/include hello.c
# arm-softfloat-linux-gnu-gcc -o hello -L
/home/lxz/builtPicoGL/lib/libPicoGL.so -L
/home/lxz/builtPicoGL/lib/libPicoGLU.so -lm hello.o
/home/lxz/builtPicoGL/lib/libPicoGL.a
/home/lxz/builtPicoGL/lib/libPicoGLU.a
不过在这里想强调一点:上面提到的大牛的博客中,有些地方写的不够详细,可能你开始看的时候会有点迷糊,我们一开始也不明白,后来做到后面遇到问题了才会反过来重新思考,在此就相关的地方我提前打个招呼。
“修改backends/vesafb/tk.c中,initialize_fbdev函数有关VarInfo的设置,改为适合你的LCD的”
这句话,是要把你的opengl里面程序的关于frambuffer 和开发板的LCD配置相符:
要修改点代码,但是我们老师把这段代码直接注释掉了也是可以的,所以你可以两种方法都试一下。
具体的代码所在文件路径我也附上
root/embeded-dev/linux-2.6.20.1-xmu-skyeye/arch/arm/mach-pxa
[root@localhost mach-pxa]# vi xmu255.c
[root@localhost mach-pxa]#
}
??????;/usr/PicoGL/backends/vesafb/tk.c
VarInfo.xres_virtual = VarInfo.xres = 640;
VarInfo.yres_virtual = VarInfo.yres = 480;
VarInfo.pixclock = 0;
VarInfo.left_margin = 0x54;
VarInfo.right_margin = 16;
VarInfo.upper_margin = 33;
VarInfo.lower_margin
= 10;
VarInfo.hsync_len = 60;
VarInfo.vsync_len = 2;
VarInfo.xoffset = 0;
VarInfo.yoffset = 0;
VarInfo.nonstd = 0;
VarInfo.vmode &= ~FB_VMODE_YWRAP;
if (ioctl(FrameBufferFD, FBIOPUT_VSCREENINFO,
&VarInfo)) {
fprintf(stderr, "ioctl(FBIOPUT_VSCREENINFO failed): %s\n",
strerror(errno));
exit(1);
}
tatic struct pxafb_mode_info xmu255_fb_mode = {
pixclock:
LCD_PIXCLOCK,
bpp:
LCD_BPP,
xres:
LCD_XRES,
yres:
LCD_YRES,
hsync_len:
LCD_HORIZONTAL_SYNC_PULSE_WIDTH,
vsync_len:
LCD_VERTICAL_SYNC_PULSE_WIDTH,
left_margin:
LCD_BEGIN_OF_LINE_WAIT_COUNT,
upper_margin:
LCD_BEGIN_FRAME_WAIT_COUNT,
right_margin:
LCD_END_OF_LINE_WAIT_COUNT,
lower_margin:
LCD_END_OF_FRAME_WAIT_COUNT,
sync:
LCD_SYNC,
cmap_greyscale: 0,
};
/root/embeded-dev/linux-2.6.20.1-xmu-skyeye/include/asm/arch
#define
LCD_PIXCLOCK
0
#define
LCD_BPP
16
#define
LCD_XRES
640
#define
LCD_YRES
480
#define
LCD_HORIZONTAL_SYNC_PULSE_WIDTH
60
#define
LCD_VERTICAL_SYNC_PULSE_WIDTH
2
#define
LCD_BEGIN_OF_LINE_WAIT_COUNT
0x54
#define
LCD_BEGIN_FRAME_WAIT_COUNT
33
#define
LCD_END_OF_LINE_WAIT_COUNT
16
#define
LCD_END_OF_FRAME_WAIT_COUNT
10
#define
LCD_SYNC
(FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT)
#define
LCD_LCCR0
( LCCR0_PAS)
#define
LCD_LCCR3
(LCCR3_PCP | LCCR3_Acb(0xff)| LCCR3_PixClkDiv(0x1) |
LCCR3_Bpp(0x04))
我们继续。
中间还出现了找不到fb0 fd 等类似错误,解决的方法也在网盘上,下次加上去。
到这里opengl应该没有问题了,然后开始sdl
sdl这个东东也很麻烦,从网上搜的很多资料里面都提到过要先设置环境变量,但是没有人具体说要在哪里设置,所以我们就不清楚,但是还是做了点修改,就是在/root下打开~/.bash_profile文件,将你所要使用的交叉编译工具链的路径加上去。
拿我们自己来说,我们添加的代码为:
PATH=/usr/local/arm/3.4.1/arm-linux-gcc
下面就开始交叉编译了。
:首先下载 SDL-1.2.3.tar.gz
#tar zxvf SDL-1.2.3.tar.gz
#cd SDL-1.2.3
下面配置文件:
#./configure --prefix=/opt/libSDL --host=arm-linux --disable-video
--disable-arts --disable-nasm --disable-video-x11
--disable-nas --disable-joystick
--disable-cdrom
或者是
#./configure --prefix=/tftpboot/root/usr --enable-video-fbcon
--disable-video-qtopia --disable-video-photon
--disable-video-direct --disable-video-ggi --disable-video-svga
--disable-video-aalib --disable-video-dummy --disable-video-dga
--disable-arts --disable-esd --disable-alsa --disable-video-x11
--disable-nasm --disable-debug --disable-joystick-amigaos
--disable-joystick-beos --disable-joystick-bsd
--disable-joystick-darwin --disable-joystick-dc
--disable-joystick-linux --disable-joystick-macos
--disable-joystick-mint --disable-joystick-win32 --disable-joystick
--host=arm-linux --build=i386
这个命令的多少取决与你自己的情况,上面有很多disable or
enable,是根据你自己的需要设置的,具体的每个东东的含义我也不清楚,只是看这有些自己认识需要的就enable了,其他的就参考人家的了。
#make
#make install
当前目录下应该有个test文件夹,里面是自带的测试程序,要把这些东东也编译一下。
#cd test
在test的程序中,会用到mouse。但是开发板没有该设备,故如果直接对test进行编译的话,在开发板上运行的时候会出现以下错误:
“can not open mouse"
这个问题有两种解决方案,我们采取的是第二种,方法如下:
1090* ./configure
CC=arm-linux-gcc --target=arm-linux --host=arm-linux
--enable-threads --enable-timers --enable-endian --enable-file
--enable-oss --disable-alsa --disable-esd --disable-arts
--disable-diskaudio --disable-nas --disable-esd-shared
--disable-esdtest --disable-mintaudio --disable-nasm
--disable-video-x11 --disable-video-dga --enable-video-fbcon
--enable-video-directfb --enable-video-ps2gs --disable-video-xbios
--disable-video-gem --disable-video-dummy --enable-video-opengl
--enable-input-events --enable-pthreads --enable-video-picogui
--enable-video-qtopia
其中enable和disable的选择需要根据个人情况而定
#make
#cp * /root/embeded-dev/fs/test/(在开发板的根目录下)
运行开发板,我们用的是NFS系统,进入根目录之后
#cd test
export
SDL_NOMOUSE=1
#./testwin
应该就可以看到结果了
解决“can not open mouse”的第二种方法,就是直接将代码屏蔽掉。这段代码所在的文件是你所要测试的程序的源文件
sdl_nomouse =
SDL_getenv("SDL_NOMOUSE");
if ( ! sdl_nomouse ) {
SDL_SetError("Unable to
open mouse,do I have mouse?");
//@FB_VideoQuit(this);
//@return(-1);
}
然后从头开始交叉编译,那么就不需要上面红色那个export命令了
这个学期在学习嵌入式,由于老师的高要求。所以我们几个水手必须要完成一个项目,名字就叫OpenGL
ES &
SDL的开发,这个东东以前从来没有搞过,加上网上资源又非常少,所以费了九牛二虎之力终于现在把这两个分别在开发板上运行成功。
以防忘记,所以现在做个记录,也是为了后人着想。故自己会做的尽量详细。
先提一点:我们用的开发板是255的。
首先关于Opengl
ES的,我们在网上搜到了一个大牛的博客,上面介绍的很详细,非常感谢这位大牛,才使我们的工作顺利进行,所以为了表示对这个大牛的感谢和学习,故自己也想造福后人。在次就不多做介绍,现链接如下:
http://xianzilu.spaces.live.com/blog/cns!4201FDC93932DDAF!274.entry
除了链接,我也把他写的内容转到这里来:
在ARM Linux上使用OpenGL
这两天在ARM上跑了一个OpenGL,应该说是OpenGL|ES的软件包,虽然我觉得可能最后我不会使用这个软件包,但是还是记录下来以备忘记。先全局介绍下,首先,什么是OpenGL和OpenGL|ES。OpenGL是一套绘图函数的标准,OpenGL|ES是OpenGL中针对嵌入式系统的一套函数子集。OpenGL|ES的官方是http://www.khronos.org/opengles/,上面有更多的信息。需要注意的是,OpenGL仅仅是标准,而如果你要使用OpenGL,则需要找到可以实现这些OpenGL标准函数的程序库或源代码。目前,在ARM这种一般没有图形加速器的平台上,OpenGL|ES的实现都是靠软件的。主要的OpenGL|ES程序库有:Klimt,Vincent
(ogles),TinyGL等。Google一下,可以看到它们的主页。这些实现基本上都是基于X11、Qt/E这样的窗口平台的。我用的软件包叫做PicoGL,它是TinyGL的一个分支,不同之处就在于PicoGL支持直接在Framebuffer上输出图像。PicoGL是一位台湾同胞写的,他的主页http://jserv.sayya.org/。但是这个软件包的源码极其难找,我用的是一位很牛的同事搜到的,地址是http://people.openmoko.org/jserv/graphics/picogl-20051108.tar.bz2。
要使用这个软件包还必须有支持软件浮点的交叉编译器,我们一般用的arm-linux-gcc
2.95.3/3.3.2/3.4.1等都不支持软件浮点,这需要我们重新编译一个。编译一个交叉编译器,引用Crosstool作者Dan
Kegel的话,used to be a scary prospect,requiring iron will,days if not
weeks of
effort……幸好有Crosstool这个工具,如果你的机器好网速快,输入个指令,差不多1个多小时就可以编译出来。crosstool的主页http://kegel.com/crosstool/,下载地址http://kegel.com/crosstool/crosstool-0.43.tar.gz。
首先制作交叉编译器,先以root用户登陆,建立交叉编译器安装目录,而且把目录所有者改为你的普通用户
# mkdir /opt/crosstool
# chown /opt/crosstool lxz
# chgrp /opt/crosstool users
然后以普通用户登陆,解压缩和安装
# tar xvzf crosstool-0.43.tar.gz
# cd crosstool-0.43
# ./demo-arm-softfloat.sh
crosstool会从网上下载需要的源码包,然后编译,最后安装。crosstool相关的资料可以看http://kegel.com/crosstool/current/doc/crosstool-howto.html。然后在/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu里面就会有支持软件浮点的交叉编译器了。
然后解压缩picogl,修改picogl的代码。
首先是picogl的一处bug,在backends/vesafb/tk.c的第一行增加宏
#define _FB_TK_
然后把backends/vesafb/glx_impl.h里面的
struct fb_fix_screeninfo FixedInfo;
struct fb_var_screeninfo VarInfo, OrigVarInfo;
修改为
#ifdef _FB_TK_
struct fb_fix_screeninfo FixedInfo;
struct fb_var_screeninfo VarInfo, OrigVarInfo;
#else
extern struct fb_fix_screeninfo FixedInfo;
extern struct fb_var_screeninfo VarInfo, OrigVarInfo;
#endif
这是因为有好几个文件调用了backends/vesafb/glx_impl.h,如果不这么改,会出现多重定义错误。
然后,为了让你的程序使用picogl更方便些,最好再改个地方include/GL/glx.h
#include GLX_IMPL_HEADER
改为你喜欢的方式,指向backends/vesafb/glx_impl.h
修改backends/vesafb/tk.c中,initialize_fbdev函数有关VarInfo的设置,改为适合你的LCD的。
然后配置
# cd PicoGL
#
CC=/opt/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm-softfloat-linux-gnu-gcc
./configure --with-backend=vesafb --host=arm-softfloat-linux-gnu
--prefix=/home/lxz/builtPicoGL
说明下,CC=设置交叉编译器的位置,--with-backend=vesafb指定使用FB作为显示设备,host=arm-softfloat-linux-gnu设定交叉编译,--prefix=/home/lxz/builtPicoGL设定编译后库和示例程序安装位置。
然后
# make
# make install
在/home/lxz/builtPicoGL/lib里就有PicoGL的库了,把动态库文件拷贝到arm-linux根文件系统的/lib里面,把/home/lxz/builtPicoGL/bin里的程序拷贝到arm-linux文件系统的任何地方,然后制作和烧写文件系统映像(或者使用NFS),执行,就可以看到结果了。
当你编译一个使用PicoGL库的程序(假设叫做hello.c)时,需要输入
# arm-softfloat-linux-gnu-gcc -c -I /home/lxz/PicoGL/include -I
/usr/include hello.c
# arm-softfloat-linux-gnu-gcc -o hello -L
/home/lxz/builtPicoGL/lib/libPicoGL.so -L
/home/lxz/builtPicoGL/lib/libPicoGLU.so -lm hello.o
/home/lxz/builtPicoGL/lib/libPicoGL.a
/home/lxz/builtPicoGL/lib/libPicoGLU.a
不过在这里想强调一点:上面提到的大牛的博客中,有些地方写的不够详细,可能你开始看的时候会有点迷糊,我们一开始也不明白,后来做到后面遇到问题了才会反过来重新思考,在此就相关的地方我提前打个招呼。
“修改backends/vesafb/tk.c中,initialize_fbdev函数有关VarInfo的设置,改为适合你的LCD的”
这句话,是要把你的opengl里面程序的关于frambuffer 和开发板的LCD配置相符:
要修改点代码,但是我们老师把这段代码直接注释掉了也是可以的,所以你可以两种方法都试一下。
具体的代码所在文件路径我也附上
root/embeded-dev/linux-2.6.20.1-xmu-skyeye/arch/arm/mach-pxa
[root@localhost mach-pxa]# vi xmu255.c
[root@localhost mach-pxa]#
}
??????;/usr/PicoGL/backends/vesafb/tk.c
VarInfo.xres_virtual = VarInfo.xres = 640;
VarInfo.yres_virtual = VarInfo.yres = 480;
VarInfo.pixclock = 0;
VarInfo.left_margin = 0x54;
VarInfo.right_margin = 16;
VarInfo.upper_margin = 33;
VarInfo.lower_margin
= 10;
VarInfo.hsync_len = 60;
VarInfo.vsync_len = 2;
VarInfo.xoffset = 0;
VarInfo.yoffset = 0;
VarInfo.nonstd = 0;
VarInfo.vmode &= ~FB_VMODE_YWRAP;
if (ioctl(FrameBufferFD, FBIOPUT_VSCREENINFO,
&VarInfo)) {
fprintf(stderr, "ioctl(FBIOPUT_VSCREENINFO failed): %s\n",
strerror(errno));
exit(1);
}
tatic struct pxafb_mode_info xmu255_fb_mode = {
pixclock:
LCD_PIXCLOCK,
bpp:
LCD_BPP,
xres:
LCD_XRES,
yres:
LCD_YRES,
hsync_len:
LCD_HORIZONTAL_SYNC_PULSE_WIDTH,
vsync_len:
LCD_VERTICAL_SYNC_PULSE_WIDTH,
left_margin:
LCD_BEGIN_OF_LINE_WAIT_COUNT,
upper_margin:
LCD_BEGIN_FRAME_WAIT_COUNT,
right_margin:
LCD_END_OF_LINE_WAIT_COUNT,
lower_margin:
LCD_END_OF_FRAME_WAIT_COUNT,
sync:
LCD_SYNC,
cmap_greyscale: 0,
};
/root/embeded-dev/linux-2.6.20.1-xmu-skyeye/include/asm/arch
#define
LCD_PIXCLOCK
0
#define
LCD_BPP
16
#define
LCD_XRES
640
#define
LCD_YRES
480
#define
LCD_HORIZONTAL_SYNC_PULSE_WIDTH
60
#define
LCD_VERTICAL_SYNC_PULSE_WIDTH
2
#define
LCD_BEGIN_OF_LINE_WAIT_COUNT
0x54
#define
LCD_BEGIN_FRAME_WAIT_COUNT
33
#define
LCD_END_OF_LINE_WAIT_COUNT
16
#define
LCD_END_OF_FRAME_WAIT_COUNT
10
#define
LCD_SYNC
(FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT)
#define
LCD_LCCR0
( LCCR0_PAS)
#define
LCD_LCCR3
(LCCR3_PCP | LCCR3_Acb(0xff)| LCCR3_PixClkDiv(0x1) |
LCCR3_Bpp(0x04))
我们继续。
中间还出现了找不到fb0 fd 等类似错误,解决的方法也在网盘上,下次加上去。
到这里opengl应该没有问题了,然后开始sdl
sdl这个东东也很麻烦,从网上搜的很多资料里面都提到过要先设置环境变量,但是没有人具体说要在哪里设置,所以我们就不清楚,但是还是做了点修改,就是在/root下打开~/.bash_profile文件,将你所要使用的交叉编译工具链的路径加上去。
拿我们自己来说,我们添加的代码为:
PATH=/usr/local/arm/3.4.1/arm-linux-gcc
下面就开始交叉编译了。
:首先下载 SDL-1.2.3.tar.gz
#tar zxvf SDL-1.2.3.tar.gz
#cd SDL-1.2.3
下面配置文件:
#./configure --prefix=/opt/libSDL --host=arm-linux --disable-video
--disable-arts --disable-nasm --disable-video-x11
--disable-nas --disable-joystick
--disable-cdrom
或者是
#./configure --prefix=/tftpboot/root/usr --enable-video-fbcon
--disable-video-qtopia --disable-video-photon
--disable-video-direct --disable-video-ggi --disable-video-svga
--disable-video-aalib --disable-video-dummy --disable-video-dga
--disable-arts --disable-esd --disable-alsa --disable-video-x11
--disable-nasm --disable-debug --disable-joystick-amigaos
--disable-joystick-beos --disable-joystick-bsd
--disable-joystick-darwin --disable-joystick-dc
--disable-joystick-linux --disable-joystick-macos
--disable-joystick-mint --disable-joystick-win32 --disable-joystick
--host=arm-linux --build=i386
这个命令的多少取决与你自己的情况,上面有很多disable or
enable,是根据你自己的需要设置的,具体的每个东东的含义我也不清楚,只是看这有些自己认识需要的就enable了,其他的就参考人家的了。
#make
#make install
当前目录下应该有个test文件夹,里面是自带的测试程序,要把这些东东也编译一下。
#cd test
在test的程序中,会用到mouse。但是开发板没有该设备,故如果直接对test进行编译的话,在开发板上运行的时候会出现以下错误:
“can not open mouse"
这个问题有两种解决方案,我们采取的是第二种,方法如下:
1090* ./configure
CC=arm-linux-gcc --target=arm-linux --host=arm-linux
--enable-threads --enable-timers --enable-endian --enable-file
--enable-oss --disable-alsa --disable-esd --disable-arts
--disable-diskaudio --disable-nas --disable-esd-shared
--disable-esdtest --disable-mintaudio --disable-nasm
--disable-video-x11 --disable-video-dga --enable-video-fbcon
--enable-video-directfb --enable-video-ps2gs --disable-video-xbios
--disable-video-gem --disable-video-dummy --enable-video-opengl
--enable-input-events --enable-pthreads --enable-video-picogui
--enable-video-qtopia
其中enable和disable的选择需要根据个人情况而定
#make
#cp * /root/embeded-dev/fs/test/(在开发板的根目录下)
运行开发板,我们用的是NFS系统,进入根目录之后
#cd test
export
SDL_NOMOUSE=1
#./testwin
应该就可以看到结果了
解决“can not open mouse”的第二种方法,就是直接将代码屏蔽掉。这段代码所在的文件是你所要测试的程序的源文件
sdl_nomouse =
SDL_getenv("SDL_NOMOUSE");
if ( ! sdl_nomouse ) {
SDL_SetError("Unable to
open mouse,do I have mouse?");
//@FB_VideoQuit(this);
//@return(-1);
}
然后从头开始交叉编译,那么就不需要上面红色那个export命令了
相关文章推荐
- OpenGL ES & SDL(转载)
- OpenGL ES & SDL(转载)
- OpenGL ES & SDL
- OpenGL ES & SDL
- OpenGL-ES 中的 mipmapping …
- OpenGL ES & SDL
- ARM-Linux OpenGL ES & SDL
- IO端口和IO内存 (转载)
- 定位Oops的具体代码行 (转载)
- C++ 虚函数表解析(转载)
- 【转载】http 返回码 40…
- 转载 Android 内存泄露之applicati…
- 转载 Java爬虫框架(二)--模…
- 【转载】javascript 整数保留…
- 【转载】word 查找与替换中的…
- (转载)git 分支管理
- (转载)Git的撤消操作 - …
- Copy_from&to_user详解 转载
- IO端口和IO内存 (转载)
- C代码优化方案 (转载上)