SDL-1.2.15编译当中的一个问题

编译SDL库报_XData32错,我看了一下SDL的讨论https://bugzilla.libsdl.org/show_bug.cgi?id=1769,SDL库这个地方是有bug,SDL2应该是修补了。https://blog.csdn.net/jhting/article/details/38523945 这个帖子里介绍说可以打补丁,我没有这么做。很多人的做法是把SDL_x11sym.h的第168、169行代码注释掉了,这样SDL库确实能编译成功,但是SDL_image-1.2库编译的时候又报错了。SDL_image-1.2库编译的时候需要SDL库,我在congfigure没有出问题,make的时候报 undefined reference to `_XData32'的错。我找到了一个好办法,将SDL_X11_SYM(int,_XData32,(Display *dpy,register  long *data,unsigned len),(dpy,data,len),return)
修改为SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)

或者这样

#ifdef LONG64
SDL_X11_MODULE(IO_32BIT)
#if SDL_VIDEO_DRIVER_X11_CONST_PARAM_XDATA32
SDL_X11_SYM(int,_XData32,(Display *dpy,register _Xconst long *data,unsigned len),(dpy,data,len),return)
#else
SDL_X11_SYM(int,_XData32,(Display *dpy, register _Xconst long *data,unsigned len),(dpy,data,len),return)
#endif
SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)
#endif

然后重新编译SDL,再编译SDL_image-1.2就好了。

以下是编译记录:

./src/video/x11/SDL_x11sym.h:168:17: error: conflicting types for ‘_XData32’
 SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)
                 ^
./src/video/x11/SDL_x11dyn.c:95:5: note: in definition of macro ‘SDL_X11_SYM’

 SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned
 len),(dpy,data,len),return)

                 ^

./src/video/x11/SDL_x11dyn.c:95:5: 附注:in definition of macro
‘SDL_X11_SYM’
  rc fn params { ret p##fn args ; }

     ^

In file included from ./src/video/x11/SDL_x11dyn.h:34:0,

                 from ./src/video/x11/SDL_x11dyn.c:26:

/usr/include/X11/Xlibint.h:595:12: 附注:‘_XData32’的上一个声明在此

 extern int _XData32(


gedit /usr/include/X11/Xlibint.h

#ifdef LONG64  

SDL_X11_MODULE(IO_32BIT)  

//SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return)  

//SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),)  

#endif 

编译SDL_image-1.2

./configure --prefix=/usr/local/SDL_image-1.2 CFLAGS="-I/usr/local/include" SDL_LIBS="-L/usr/local/lib/libSDL.so -lSDL" LIBPNG_CFLAGS="-I/usr/local/png/include/libpng16" LIBPNG_LIBS="-L/usr/local/png/lib/libpng.a -lpng" --enable-static --enable-bmp --enable-gif --enable-jpg --enable-png --enable-tif

libtool: link: gcc -I/usr/local/png/include/libpng16 -I/usr/local/include -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/SDL-1.2.15/include/SDL -o .libs/showimage showimage.o  ./.libs/libSDL_image.so -L/usr/local/lib/libSDL.so -lSDL -Wl,-rpath -Wl,/usr/local/SDL_image-1.2/lib
//usr/local/lib/libSDL.so: undefined reference to `_XData32'
 

参考:

http://www.tsheffler.com/blog/2015/05/14/build-ffplay-ffmpeg-2-6-2-on-mac-osx-10-10-2/

https://blog.csdn.net/nil_lu/article/details/52728509

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值