c++ - 在另一台电脑上执行程序时加载 SDL2 共享库时出错

标签 c++ linux g++ sdl-2

我正在尝试编译我使用 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),添加了正确的 dll 和 exe(似乎工作正常),我期待它以类似的方式工作。

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

最佳答案

感谢大家的建议,我最终选择了简单的方法,动态编译“易于安装”的库,例如-lSDL2和其他静态(检查许可证,应该没问题)像这样:

g++ main.cpp -o main -Wl,-Bdynamic -lSDL2 -lSDL2_image -lSDL2_ttf -Wl,-Bstatic -lSDL2_gfx -static-libgcc -static-libstdc++

我将在我的文档中介绍如何安装所需的 SDL2 库。

关于c++ - 在另一台电脑上执行程序时加载 SDL2 共享库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653708/

相关文章:

c++ - 如何将 boost::atomic_store 与 shared_ptr<T> 和 shared_ptr<const T> 一起使用?

linux - 如何将 nohup stdout 重定向到 stdin

c++ - 为什么 g++ 接受缺少基础类型的引用类型?

c++ - Codeforces 测试服务器错误,无法在本地机器上重现

c++ - 使用 std::thread 或 CreateThread()?

c++ - 默认的Visual Studio C++控制台应用程序有409个错误

c++ - Windows C++ 线程等待队列数据推送

c++ - C++ 中 mt19937 的平台依赖状态?

linux - 如何停止nginx?它不断杀死一个进程并打开一个具有不同 pid 的新进程

gcc - G++ 错误 : ‘<anonymous>’ has incomplete type