【问题标题】:Getting a linux SDL2 program to run on a computer that does not have SDL2 installed?让 linux SDL2 程序在没有安装 SDL2 的计算机上运行?
【发布时间】:2015-10-26 03:36:14
【问题描述】:

我最近开发了一个小型 SDL2 游戏。游戏在我的电脑上运行良好,因为我安装了 SDL、SDL_image、SDL_mixer 和 SDL_ttf。但是,下载游戏的每个人都没有安装 SDL2 和扩展,因此他们无法运行该应用程序。即使没有安装 SDL2,我如何才能使该应用程序可用?

【问题讨论】:

  • 你是如何分发游戏的?
  • 我把游戏放到了gamejolt上。它基本上是将可执行文件和资源文件夹放入存档中。 gamejolt.com/games/point/98529

标签: c++ sdl


【解决方案1】:

您可以将-rpath 选项传递给ld 以指定动态库的搜索目录。

使用-rpath .-Wl,-rpath . 从 GCC 传递它)可以从可执行文件的目录加载库。只需将适当的.so 文件放在那里,它们就会被找到。

【讨论】:

    【解决方案2】:

    你可以静态链接你的库,这样就不需要安装 SDL。

    一种方法:

    g++ -o program [sources.cpp] -Wl,-Bstatic -lSDL2 -lSDL2_image \
    -lSDL2_mixer -lSDL2_ttf -Wl,-Bdynamic [dynamically linked libs]
    

    注意:如果您使用 SDL2,则必须使用 SDL2 构建的外围库,否则您将面临各种错误的风险。

    【讨论】:

    • 我怀疑 DLL 文件能否解决 Linux 上的任何问题;)
    • 静态链接是一个正确的解决方案,但请注意legal conditions:只有在您为用户提供与另一个版本重新链接的方法时,您才能静态链接 SDL。
    • 对于早期版本的 SDL,您是对的。但是 SDL2 在 zlib 许可下,因此不受限制。
    • SDL2 现在有了internal dynamic linking...thing,因此即使是静态链接的 SDL2 版本也可以升级。
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多