Raspbian/Debian 上的 SDL2

SDL2 on Raspbian/Debian

我正在尝试 link SDL2 on Raspbian Stretch,它是基于 debian 的。

我关注了the instructions:

Debian-based systems (including Ubuntu) can simply do "sudo apt-get install libsdl2-2.0" to get the library installed system-wide, and all sorts of other useful dependencies, too.

但我不知道在世界上的哪个地方安​​装了它并找到了 . -name **sdl* 并没有真正帮助...同时我在 gnat 中的构建命令仍然告诉我它没有找到任何东西:

gnatmake -g main.adb -Isource -I../source/win -I../source -I../SDL2 -gnatwk -gnatwr -gnatwu -D objectFiles -largs -lSDL2 -lSDL2_Mixer -lSDL2_ttf obj1.o obj2.o
(...)
/usr/bin/ld: cannot find -lSDL2
/usr/bin/ld: cannot find -lSDL2_Mixer
/usr/bin/ld: cannot find -lSDL2_ttf
(...)

所以我尝试按照下面的说明构建自己:

If you're compiling SDL yourself, here's what we refer to as "the Unix way" of building:

  • Get a copy of the source code, either from Mercurial or an official tarball or whatever.
  • Make a separate build directory (SDL will refuse to build in the base of the source tree).
  • Run the configure script to set things up.
  • Run "make" to compile SDL.
  • Run "make install" to install your new SDL build on the system.

This looks something like this:

hg clone https://hg.libsdl.org/SDL SDL
cd SDL
mkdir build
cd build
../configure
make
sudo make install

一切都做了它应该做的(或者至少没有说它没有做它应该做的)但现在我仍然不知道如何 link 它。我尝试将 libsdl2.so 文件复制到工作目录并将 -lSDL2 更改为 -llibsdl2 但没有成功。显然我需要对其他库执行相同的过程,但我希望我一次可以担心一个。

还有进一步的说明,但它们似乎专门适用于 C:

Once you have the library installed, you can use the sdl2-config program to help you compile your own code:

gcc -o myprogram myprogram.c `sdl2-config --cflags --libs`

而且我不知道如何为 Ada 做类似的事情。

问题是,我只是没有 link 在 Linux 方面的经验,而且我在互联网上可以找到的所有东西都太笼统了,我无法将其应用到我的案例中。

至于我到底为什么要这样做,为 Raspberry Pi 构建这个并不是我从项目开始就打算做的事情,但它对我来说变得很重要能够做到。

有谁知道我如何让它工作?我可以在 Windows 上毫无问题地构建它,所以这实际上只是让库进入我可以在 Linux.

上构建它的状态的问题

Ada 编译器只能link 针对 Ada 库。它不能 link 针对任意 C 库,例如 SDL2。

您需要安装类似 sdlada 的东西。

我找到了解决方案,正如我所料,这完全是新手。

将 SDL 构建过程生成的 .so 复制到工作目录后,我犯的错误是将链接器参数更改为 .so 的完整文件名(减去扩展名):

gnatmake -g main.adb -Isource -I../source/win -I../source -I../SDL2 -gnatwk -gnatwr -gnatwu -D objectFiles -largs -llibsdl2 -lSDL2_Mixer -lSDL2_ttf obj1.o obj2.o

我需要做的实际上是让它保持原样:

gnatmake -g main.adb -Isource -I../source/win -I../source -I../SDL2 -gnatwk -gnatwr -gnatwu -D objectFiles -largs -lSDL2 -lSDL2_Mixer -lSDL2_ttf obj1.o obj2.o

构建 SDL_Mixer 和 SDL_TTF 后,一切正常。