|
|
Zaurus 中文论坛 - 手持linux设备专用 |
 |
View previous topic :: View next topic |
Author |
Message |
ninnd
Joined: 16 Nov 2007 Posts: 167
小企鹅: 5096
|
Posted: 2007-Dec-19 Wed, pm12:18 |
|
Post subject: 我的第一个SDL程序 |
|
自从GCC搞定之后,就要开始我的LINUX C之旅了,这也是我买7500C的初衷,原来也是看过一些WINDOWS下面编程的书,LINUX下的编程从来没接触过,包括LINUX也是买了7500C之后才装了个“乌班图”,决定从游戏开始,因为我喜欢玩游戏,以最快的速度在网上找了N多的资料,又以最快的速度粗粗了看了一下之后,才发现LINUX下的编程和 WINDOWS下的有天壤之别,最后选定课题:SDL 游戏编程,也不知道对不对,先试试看吧,我的第一个程序(网上找的,不过他也是抄书上的:)):
#include <SDL>
#include <stdio>
//显示一张妹妹的图片,嘻嘻,但愿不要打哦^.^
int main(int argc, char ** argv)
{
SDL_Surface * screen; //主表面
SDL_Surface * image; //用来放MM-----的图片信息(像素)
SDL_Event event;
bool bAppRun = true;
//初始化SDL
if (SDL_Init(SDL_INIT_VIDEO) == -1) {
fprintf(stderr, "SDL_Init %s\n", SDL_GetError());
return -1;
}
//初始化成功设置退出要调用的函数SDL_Quit
atexit(SDL_Quit);
//创建一个640X480 16-bit 模式的主表面 16位可以让MM的效果好看一点
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
if (screen == NULL) {
fprintf(stderr, "Couldn't set 640x480x8 video mode %s\n",
SDL_GetError());
return -1;
}
//读取MM图片信息,并创建一个表面,并把数据填入该表面中。
image = SDL_LoadBMP("./mm.bmp"); //请在终端里运行该程序
if (image == NULL) {
fprintf(stderr, "Couldn't load MM, %s\n", SDL_GetError()); //遗憾你不能显示MM了,不过你可以用图片浏览程序看。
return -1;
}
//有了MM的表面了,就可以显示了。
//将MM的表面画在我们的主表面上
if (SDL_BlitSurface(image, NULL, screen, NULL) <0>w, image->h);
while (bAppRun) {
//消息循环
if (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
//按下任意键退出
bAppRun = false;
break;
}
}
//没事就画MM玩
SDL_UpdateRect(screen, 0, 0, image->w, image->h);
}
//退出了程序释放MM表面的资源
SDL_FreeSurface(image);
return 0;
}
gcc -o sdl sdl.c
一大堆错误,不过一眼看出SDL.h找不到,肯定是环境配置问题了,接下来
find / -name "*SDL.h*"
在/opt/native/arm/3.4.5-xscale-softvfp/arm5tel-cacko-linux/include/SDL里有啊,怎么回事,接下来
env
原来没有包含子目录只有/opt/native/arm/3.4.5-xscale-softvfp/arm5tel-cacko-linux/include接下来
gcc -o sdl sdl.c -I /opt/native/arm/3.4.5-xscale-softvfp/arm5tel-cacko-linux/include/SDL
出现一大堆“xxxxxx.so”的错误,也不知道是那个so,在网上找了找,然后
gcc -o sdl sdl.c -lSDL -I /opt/native/arm/3.4.5-xscale-softvfp/arm5tel-cacko-linux/include/SDL
通过,终于显示了MM的图片,这里有个小插曲,开始怎么也找不到MM.bmp,最后才发现问题在这里:
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE)
这里创建的是640*480 16-bit 的表面,我的MM是32-bit怪不得不认识呢,用画图改一下就OK了。
后来又有新发现,SDL库本来有配置文件的,叫sdl-config有两个参数--cflags是配置头文件路径,--libs是配置库文件路径,编译SDL程序的时候只要
gcc -o sdl sdl.c `sdl-config --cflags --libs`可以了。注意,这里不是‘(引号),而是`,我也不知道叫什么,ESC下面那个键。我在这里失败了N次。
但是问题又出现了/opt/native/arm/3.4.5-xscale-softvfp/bin下有个sdl-config,/usr/bin里有个 sdl-config,gcc默认用的是/opt/native/arm/3.4.5-xscale-softvfp/bin里那个,而zgcc.img 里根本没有SDL库,反正我用的没有。搞什么飞机嘛,有SDL头文件,没有SDL库,那还要这个sdl-config放在这误导咱们,咱不用你还不行,装上sdl和sdl-devel
gcc -o sdl sdl.c `/mnt/cf/usr/bin/sdl-config --cflags --libs`这里注意哦,这里不能用gcc -o sdl sdl.c `sdl-config --cflags --libs`哦,/usr/bin里只是个连接,gcc要的是真正的文件。
至此,可以在SDL的海洋里畅游了。
欢迎有共同爱好的朋友一起讨论,一起进步!顺便教下我,哈哈................ |
|
Back to top |
|
plum
Joined: 03 Jan 2007 Posts: 129 Location: 河南 郑州 小企鹅: 3482
|
Posted: 2007-Dec-19 Wed, pm1:45 |
|
Post subject: |
|
支持!!!!楼主强人 _________________ http://www.imobile365.com
Zaurus C1k+4G CF+Cell CF wifi+2G SD
ubuntu 7.10
WIndows XP Which in the VBOX under the ubuntu |
|
Back to top |
|
ruf
Joined: 30 Mar 2006 Posts: 71
小企鹅: 1378
|
Posted: 2007-Dec-19 Wed, pm3:10 |
|
Post subject: |
|
不错,就是在zaurus上编程环境惨了一点。 |
|
Back to top |
|
ccpaging
Joined: 07 Dec 2006 Posts: 757
小企鹅: 16604
|
Posted: 2007-Dec-19 Wed, pm3:13 |
|
Post subject: |
|
gcc -o sdl sdl.c `sdl-config --cflags --libs`可以了。
==> 还有pkg-config,编译时经常用的
==>`sdl-config --cflags --libs`的意思是说用sdl-config --cflags --libs命令的结果作为参数,你可以先在console下面执行sdl-config --cflags --libs试试
注意,这里不是‘(引号),而是`,我也不知道叫什么,ESC下面那个键。我在这里失败了N次。
==> 小z上好像是shift+m _________________ SL-C1000, 1G CF, 1G SD
pdaxrom 1.1beta3
Roku Wifi Card(Used in Cacko 1.23 & pdaXrom 1.1 Beta3)
http://ccpaging.blog.ubuntu.org.cn/
http://ccpaging.osall.com/
http://blog.sina.com.cn/zaurus/ |
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|
 |
[ 页面生成时间: 秒 ] :: [ 次查询 ] :: [ ]
|
 |
Powered by phpBB © 2001, 2002 phpBB Group
iCGstation v1.0 Template By Ray © 2003, 2004 iOptional
|
 |
|
|
|
|