编译SDL那点事

SDL1.2和SDL2.0

sdl是什么?这里就不解释了,之前的文中也说过。今天主要说说最近sdl给我填的堵。
这个说来话也长,由于工作需要,最近在用OpenCV,记得几年前用就用过OpenCV,或者说写过一些OpenCV的代码吧。OpenCV里面有使用OpenCL加速。早期由于OpenCV使用OpenCL主要是在PC端,所以在local size啊之类的东西都是按照pc来设置,而要把OpenCL移植到Android上,那就需要修改这些。现在看看OpenCV的源码,还有好多当年的痕迹。扯远了(吹牛结束)。。。
编译OpenCV的源码是需要依赖ffmpeg的,而ffmpeg又是依赖sdl。如果sdl出了问题,就会影响ffmpeg,例如,如果我们使用sdl2,那么ffmpeg就编译不出ffplay,只有使用sdl1才可以。原因很简单,想知道就留个言,这里就不多说了。如果ffmpeg编译出了问题,又会影响我编译OpenCV。所以,必须一步步来,先解决sdl的问题。看到这里你可能会说,下载编译好的库不就ok了吗,还这么费事编译干什么。。。你知道,我们这行都有点强迫症,遇事总要弄个究竟。
我电脑上目前用的是sdl2,编译sdl1.2的时候,总是出问题。接下来就看看出了那些问题。
编译sdl1.2命令如下:

    ./configure
    make
    make install

在make的时候出现了:
./include/SDL_syswm.h:58:10: fatal error: ‘X11/Xlib.h’ file not found
这个问题是因为没有装xquartz,下载地址:https://xquartz.en.softonic.com/mac/post-download?ext=1。装完了,还是不行,看看怎么回事吧。原来,装在了/opt/X11下面,而sdl查找的目录是/usr/local/。
好,那我重新指定查找目录:./configure CPPFLAGS=-I/opt/X11/include
这会总该可以了吧?结果还是有问题。
./src/video/quartz/SDL_QuartzVideo.h:94:5: error: unknown type name ‘CGDirectPaletteRef’
我在整个源码中找了一下grep -irn CGDirectPaletteRef . 结果没有。那是不是在别的地方,是我没有找呢?我又找了/usr/local也没有,又找找别的地方也没有。好吧,那我就把你干掉,找到这个文件的94行,我直接注释了。编译通过了。诶,好像忘了点事。。。编是编过了,但是我电脑上装的sdl2,我还得用呢,要是直接安装sdl1.2,冲突倒是不会,但是会弄的很乱,头文件,库文件都在一起,很不爽。那就自己指定个路径,那就/usr/sdl1_2_15吧。
完整的编译安装过程就是:

./configure  CPPFLAGS=-I/opt/X11/include  --prefix=/usr/sdl1_2_15
make -j4
make install

要是安装存在权限问题,或者加个sudo或者指定个有权限的路径就ok了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值