我正在尝试编译我使用 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/