Raspbian / Debian上的SDL2

时间:2018-07-14 03:51:00

标签: linker raspbian sdl-2 ada gnat

我正在尝试在基于debian的Raspbian Stretch上链接SDL2。

我关注了the instructions

  

基于Debian的系统(包括Ubuntu)只需执行“ sudo apt-get install libsdl2-2.0”就可以在系统范围内安装该库,并且还可以安装各种其他有用的依赖项。

但是我不知道在哪里安装了它并找到了。 -name ** sdl *并没有真正的帮助...同时,我在gnat中的build命令仍然告诉我它什么也没找到:

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
(...)

因此,我尝试按照以下说明构建自己:

  

如果您要自己编译SDL,这就是我们所说的“ Unix   方式”:

     
      
  • 从Mercurial或官方tarball或其他工具中获取源代码的副本。
  •   
  • 创建一个单独的构建目录(SDL将拒绝在源代码树的基础上进行构建)。
  •   
  • 运行configure脚本进行设置。
  •   
  • 运行“ make”以编译SDL。
  •   
  • 运行“ make install”以在系统上安装新的SDL构建。
  •   
     

这看起来像这样:

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

任何事情都按照原计划进行(或至少没有说没有做应做的事情),但是现在我仍然不知道如何链接它。我尝试将libsdl2.so文件复制到工作目录,并将-lSDL2更改为-llibsdl2,但是没有运气。显然,我需要对其他库执行相同的过程,但我希望我一次可以担心一个库。

还有其他说明,但它们似乎专门适用于C:

  

一旦安装了库,就可以使用sdl2-config   程序来帮助您编译自己的代码:

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

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

问题是,我只是没有在Linux中进行链接的经验,而且我在互联网上可以找到的所有内容太笼统了,所以我无法将其应用于我的情况。

关于为什么我想这样做,从项目一开始我就没有打算为Raspberry Pi构建它,但是对于我来说,这样做很重要。

有人知道我如何使它工作吗?我可以在Windows上毫无问题地构建它,因此实际上只是使库进入我可以在Linux上构建它的状态。

2 个答案:

答案 0 :(得分:1)

Ada编译器只能链接到Ada库。它无法链接到SDL2之类的任意C库。

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

答案 1 :(得分:0)

我找到了解决方案,而且正如我所期望的,这完全是新手。

将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之后,一切都会按预期进行。