编译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了。

在Windows系统下编译SDL2可以按照以下步骤进行: ### 1. 准备工具和环境 需要安装以下工具: - **CMake**:用于生成项目构建文件。可以从[CMake官网](https://cmake.org/download/)下载安装程序,安装完成后确保`cmake`命令可以在命令行中使用。 - **Visual Studio**:提供编译所需的编译器和工具链。可以从[Visual Studio官网](https://visualstudio.microsoft.com/)下载并安装,安装时需要选择“使用C++的桌面开发”工作负载。 ### 2. 下载SDL2源代码 从[SDL2的官方GitHub仓](https://github.com/libsdl-org/SDL)下载最新的源代码压缩包,解压到本地目录,例如`C:\SDL2`。 ### 3. 创建构建目录 在SDL2源代码目录的同级位置创建一个新的目录,用于存放CMake生成的构建文件,例如`C:\SDL2-build`。 ### 4. 使用CMake生成项目文件 打开命令提示符或PowerShell,导航到构建目录: ```sh cd C:\SDL2-build ``` 然后运行CMake命令来生成Visual Studio项目文件: ```sh cmake -G "Visual Studio 16 2019" -A x64 C:\SDL2 ``` 上述命令中,`-G`指定了生成的项目文件类型为Visual Studio 2019,`-A x64`指定了目标平台为64位,`C:\SDL2`是SDL2源代码的路径。根据你安装的Visual Studio版本,可能需要调整`-G`参数的值。 ### 5. 编译SDL2 打开生成的SDL2.sln文件(位于`C:\SDL2-build`目录下),在Visual Studio中选择“生成” -> “生成解决方案”,等待编译过程完成。 ### 6. 安装SDL2 编译完成后,可以选择将SDL2安装到系统目录。在Visual Studio中,右键单击“INSTALL”项目,选择“生成”。这将把SDL2的头文件和文件复制到指定的安装目录(默认是`C:\Program Files (x86)\SDL2`)。 ### 示例代码 以下是一个简单的SDL2程序示例,用于验证SDL2是否正确编译和安装: ```cpp #include <SDL2/SDL.h> int main(int argc, char* argv[]) { if (SDL_Init(SDL_INIT_VIDEO) < 0) { SDL_Log("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); return 1; } SDL_Window* window = SDL_CreateWindow("SDL2 Test", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); if (window == nullptr) { SDL_Log("Window could not be created! SDL_Error: %s\n", SDL_GetError()); return 1; } SDL_Delay(2000); SDL_DestroyWindow(window); SDL_Quit(); return 0; } ``` 编译并运行上述代码时,需要确保编译器能够找到SDL2的头文件和文件。可以通过设置编译器的包含目录和目录来实现。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值