1、下载了一个SDL-1.2.14.tar.gz

2、下载一个cygwin64对SDL-1.2.14.tar.gz解压

tar -zxvf SDL-1.2.14.tar.gz

在网上找的大概是需要需要这三个步骤

(1)./configure

(2)make

(3)make install

第一步的时候,就遇到了问题,报出了

*** Your compiler (gcc) does not produce Win32 executables!

在网上找了半天,原因大概是gcc版本的事,我看了我的gcc 4.9.2,把它改为gcc3.x

网上给出来的方法是

$ chmod 755 /usr/bin/set-gcc-default-3.sh
$ /usr/bin/set-gcc-default-3.sh

我在/usr/bin/里也没有找到set-gcc-default-3.sh,只能想别的办法了

看到网上有人说mingw与cygwin差不多,也就从网上下载了一个MinGW-5.1.6.exe,将cygwin中gcc换成MingGw最后还是没有编译成功

最后实在是没有办法了就从网上下载一个离线版的cygwin中gcc3.4.4,cygwin离线版的安装很容易,安装的也快的多。

安装好cygwin之后,重新编译SDL1.2,这次很顺利,在第二步的时候遇到一个很小的插曲,

/SDL_gamma.o build/.libs/SDL_pixels.o build/.libs/SDL_stretch.o build/.libs/SDL_
o build/.libs/SDL_yuv_sw.o build/.libs/SDL_joystick.o build/.libs/SDL_nullevents
udio.o build/.libs/SDL_dummyaudio.o build/.libs/SDL_sysevents.o build/.libs/SDL_
ents.o build/.libs/SDL_dibvideo.o build/.libs/SDL_dibaudio.o build/.libs/SDL_mmj
syssem.o build/.libs/SDL_systhread.o build/.libs/SDL_syscond.o build/.libs/SDL_s
m -mno-cygwin -o build/.libs/SDL.dll -Wl,--enable-auto-image-base -Xlinker --
/usr/bin/ld: cannot find dllcrt2.o: No such file or directory
/usr/bin/ld: cannot find -lmingw32
/usr/bin/ld: cannot find -lmoldname
/usr/bin/ld: cannot find -lmingwex
/usr/bin/ld: cannot find -lmsvcrt
/usr/bin/ld: cannot find -lmingw32
/usr/bin/ld: cannot find -lmingw32
/usr/bin/ld: cannot find -lmoldname
/usr/bin/ld: cannot find -lmingwex
/usr/bin/ld: cannot find -lmsvcrt
collect2: ld returned 1 exit status

很明显这个错误,是因为找不到下面的这些库文件,与dllcrt2.o文件,可能是由于编译的时候,没有找到相应的目录吧,

在SDL1.2中的Makefile中的27行

EXTRA_LDFLAGS = -mno-cygwin -luser32 -lgdi32 -lwinmm

后面加上 -L/lib/mingw,dllcrt2.o拷贝到Makefile同目录下,即可编译通过

好了现在编译通过,接下来就测试一下吧

#include<SDL.h>
#include<stdlib.h>
int main(){
SDL_Surface *screen;
Uint32 color;
int x;
if(SDL_Init(SDL_INIT_VIDEO)<0){
fprintf(stderr,"无法初始化:%s\n",SDL_GetError());
exit(1);
}
screen = SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);/*640 X 480 X 16位色*/
if(screen == NULL){
fprintf(stderr,"无法设置640x480x16位色的视频模式:%s\n",SDL_GetError());
exit(1);
}
atexit(SDL_Quit);
color = SDL_MapRGB(screen->format,0,0,255);/*蓝色*/
SDL_FillRect(screen,&screen->clip_rect,color); /*整个屏幕填充颜色*/
SDL_UpdateRect(screen,0,0,0,0); /*更新整个屏幕*/
SDL_Delay(5000);/*延迟5秒钟*/
return 0;
}

  这个是网上找了一个测试代码,编译一下

  gcc test.c -o test -I/usr/local/include/SDL -L/usr/local/lib -lSDL -lpthread

运行一下./test,Ok,很成功,O(∩_∩)O

总结一下,cygwin上的问题确实挺多的,好点的可以使用虚拟机搭建一个ubuntu,ubuntu上一条命令即可完成,比cygwin简单多了,我的电脑配置不是很高,运行虚拟机比较慢,只好搭建一个cygwin, 不过感觉linux上,编译这些开源的东西,确实挺费劲的,好像是linux上编译很少能够有一次就很顺利编译通过的,各种各样版本匹配确实挺麻烦的。

下载cygwin:http://dl.cr173.com/soft1/cygwin2.738.zip

下载SDL1.2.14:http://download.csdn.net/detail/flcz163/8533541

网上引用到的连接:

http://blog.sina.com.cn/s/blog_557366df01011wna.html

http://blog.csdn.net/delphi308/article/details/6693968

http://blog.sina.com.cn/s/blog_489200e9010007i5.html

cygwin编译SDL1.2的更多相关文章

  1. Cygwin编译自己定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file

    今天受命帮师弟调个OpenCV4Android 识别银行卡的程序,版本号为OpenCV4Android2.4.9,使用方式为前文介绍的第一种方式,即通过jni调用opencv.如杂家前文所述,配套的N ...

  2. 〖Windows〗zigbee实验之cygwin编译TestSimpleMac并测试通信

    1. 开发环境及工具: 1) cygwin安装包下载地址:cygwin-files.zip    >>安装时选择本地目录(Select local Package directory),其 ...

  3. win7下使用cygwin编译VLC

     win7下使用cygwin编译VLC http://kathy.blog.51cto.com/1168050/295460 2010-04-15 14:54:01 标签:编译 休闲 VLC 职场 w ...

  4. 自己通过Cygwin编译的windows下的redis3.2.6

    采用方法:https://my.oschina.net/maxid/blog/186506 方法中在3.2.6未找到src/redis.h文件 未修改 方法中 /deps/hiredis/net.c ...

  5. win8.1 cygwin编译java轻量虚拟机avian

    1.背景 昨天在网上看到别人用aauto写本地小程序写的很爽,我觉得如果java的jre能小一点,凭借java庞大的第三方类库写小工具也还算不错的.本人就经常用eclipse+一些commons包写些 ...

  6. cygwin编译ffmpeg移植到android平台问题集锦

    编译环境: windows xp Cygwin 1.1.3.1 NDK r9 1.提示各种command not found 比如 ./config.sh: line 6: $'--arch=arm\ ...

  7. Cygwin 编译 ffmpeg

    1.在官网下载linux下的压缩包 https://ffmpeg.zeranoe.com/builds/source/ffmpeg/ffmpeg-3.2.4.tar.xz 2.进入cygwin,假定将 ...

  8. 解决Cygwin编译cocos2dx 遇到的 error: 'UINT64_C' was not declared in this scope 问题

    环境工具:Win10.VS2013.cocos2d-x-2.2.6.Cygwin.ADT 问题来源:写了一个小游戏,VS2013上运行成功,就尝试着打包apk,项目导入到ADT里面,添加了cocos2 ...

  9. 〖Windows〗zigbee实验之cygwin编译tinyos.jar编译出错的解决方法

    1. 使用的cygwin安装包下载地址:cygwin-files.zip 2. 使用的一些rpm安装包的下载地址:cygwin_cc2430_rpms.zip 3. cygwin的默认安装目录是:C: ...

随机推荐

  1. Ubuntu14.04 weblogic11g集群环境测试

    在当前域下面新建两个服务器,服务器信息设置: server1:127.0.0.1:7010 server2:127.0.0.1:7020 第一步:新建服务器 (1)进入“服务器”,点击新建: (2)填 ...

  2. ural 1671 Anansi's Cobweb

    这道题是并差集的简单应用 #include <cstdio> #include <cstring> #include <algorithm> #define max ...

  3. 读、写SD上的文件请按如下步骤进行

    1.调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限.例如使用如下代码//Environment.getE ...

  4. PCB的阻抗控制

    多层板的结构: 通常我们所说的多层板是由芯板和半固化片互相层叠压合而成的,芯板是一种硬质的.有特定厚度的.两面包铜的板材,是构成印制板的基础材料.而半固化片构成所谓的浸润层,起到粘合芯板的作用,虽然也 ...

  5. 在什么情况下使用struct,struct与class的区别

    Struct定义和使用 类是引用类型,是保存在托管堆中的.通过定义类,我们可以在数据的生存期上得到很高的灵活性,但是也会让程序的性能有一定的损失.虽然这种损失很小,但当我们只需要定义一个很小的结构时, ...

  6. POJ-2386(深广搜基础)

    Lake Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 25322   Accepted: 12759 D ...

  7. RequireJS进阶(二)

    这一篇来认识下打包工具的paths参数,在入门一中就介绍了require.config方法的paths参数.用来配置jquery模块的文件名(jQuery作为AMD模块时id为“jquery”,但文件 ...

  8. 解决Xcode8 输出一对字符串问题

    在Product->Scheme->Edit Scheme->Run->Environment Variables下添加键:OS_ACTIVITY_MODE, 值:Disabl ...

  9. mysql数据库优化[千万级查询]

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  10. hdu 4605-Magic Ball Game(树状数组)

    题目大意: 给你一棵二叉树,每个节点有一个w值,现在有一颗小球,值为x,从根节点往下掉,如果w==x,那么它就会停止:如果w>x,那么它往左.右儿子的概率都是1.2:如果w<x,那么它往左 ...