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 后,一切正常。
我正在尝试 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 后,一切正常。