首页 > 解决方案 > 与我自己的源文件一起编译 SDL 2

问题描述

由于编译错误,我无法正确使用动态链接的 SDL,我不喜欢使用静态链接路线,因为我不确定在我使用的语言中实现的效果如何。

这就是为什么我想手动编译 SDL 2 源文件的原因,我只是使用了官方 repo 中 /include 和 /src 下的文件,但是在编译时我得到了这个错误:

In file included from /Users/adtrevor/CompileSDL/Sources/SDL/src/video/qnx/video.c:23:
/Users/adtrevor/CompileSDL/Sources/SDL/src/video/qnx/sdl_qnx.h:26:10: fatal error: 'screen/screen.h' file not found
#include <screen/screen.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.
In file included from /Users/adtrevor/CompileSDL/Sources/SDL/src/video/qnx/keyboard.c:26:
/Users/adtrevor/CompileSDL/Sources/SDL/src/video/qnx/sdl_qnx.h:26:10: fatal error: 'screen/screen.h' file not found
#include <screen/screen.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.
In file included from /Users/adtrevor/CompileSDL/Sources/SDL/src/video/qnx/gl.c:23:
/Users/adtrevor/CompileSDL/Sources/SDL/src/video/qnx/sdl_qnx.h:26:10: fatal error: 'screen/screen.h' file not found
#include <screen/screen.h>
         ^~~~~~~~~~~~~~~~~
1 error generated.

我知道可以这样做,因为官方网站提到了它,但我完全不知道我应该遵循哪些步骤才能使其正常工作?

编辑: 这是示例回购:https ://github.com/adtrevor/compileSDL

标签: cswiftsdl-2

解决方案


SDL 是一个跨平台库,您不太可能希望编译所有源文件以获得所需的功能。通常你运行configure/ make,它会决定构建/不构建什么。

您提到您正在自己构建源文件;因此,您可能想要阻止 SDL 构建并尝试捕获相同的文件。关于您的错误,QNX 是黑莓操作系统——因此,根据您的用例,您可以避免在其下构建所有内容,SDL/src/video/qnx/*因为无论如何您都没有这些操作系统头文件。

无论如何,SDL 应该默认构建静态库。考虑进行常规构建并使用sdl-config --static-libs以找出应该链接的静态库。


推荐阅读