在另一台PC上执行程序时加载SDL2共享库时出错

问题描述 投票:2回答:1

我正在尝试编译使用SDL2制作的程序以在其他计算机上运行(或在这种情况下测试VM)。我一直在用我认为正确的标志进行编译,例如g++ main.cpp -o main -lSDL2,但是当我尝试在另一个Ubuntu安装上执行它时,出现此错误。

error while loading shared libraries: libSDL2-2.0.so.0: cannot open shared object file: No such file or directory

据我了解,这不是我编译的问题,而是我希望它如何在另一个Linux安装上工作;我已经在Windows上交叉编译(使用mingw32)并对其进行了测试(使用新安装的VM),并使用exe添加了正确的dll(似乎可以正常工作),并且希望它以类似的方式工作。

这种情况下的标准是什么?我是否应该编写安装脚本以在目标计算机上安装库依赖项?还有我不知道的另一种方法吗?我从未发布过适用于Linux(非Windows)的应用程序,而且我一直在努力寻找资源以“正确的方式”做事。

c++ linux g++ sdl-2
1个回答
0
投票

我不确定您对pkg-config有多熟悉,但是sdl2的输出是这个:

-D_REENTRANT -I/usr/include/SDL2 -lSDL2

这是从运行此命令发现的:

pkg-config --cflags --libs sdl2

基本上,您需要指向SDL2所在的位置BEFORE您实际链接到它的位置。

工具pkg-config旨在告诉您想要链接到Linux中的软件包时所需的信息。您正在与库链接,但是却忘记告诉GCC库所在的位置。

如果要编译代码,请尝试以下操作:

g++ main.cpp -o runme `pkg-config --cflags --libs sdl2`

这将自动获取包含SDL2时需要编译的所有标志。

哦,您应该注意,添加标记和图书馆时的事项!!

关于SO的问题很多,其中编译器选项的顺序导致了所有问题。不要像那些人。我建议您在SO上搜索更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.