17

Windows 用のゲームの静的にリンクされた「単一バイナリ」バージョンを作成しようとしています。sdl、sdl_image、および sdl_mixer とリンクして、いくつかのサポート ライブラリを取り込みたいと考えています。残念ながら、cygwin/mingw/gcc を使用してそれらすべてをコンパイルおよびリンクする方法を見つけられませんでした。私が知る限り、既存のすべての公開バージョンは共有ライブラリ/dll のみです。

ここでライセンスについて話しているわけではないことに注意してください。ソースは公開されるため、sdl の GPL/LGPL 性は関係ありません。

4

5 に答える 5

22

プロジェクトをコンパイルするときは、メイクファイルにいくつかの変更を加えるだけです。

  • の代わりにsdl-config --libssdl-config --static-libs
  • 上記の使用を と でsdl-config --static-libs囲み-Wl,-Bstaticます-Wl,-Bdynamic。これは、静的リンクを強制するように GCC に指示しますが、それらの間で指定されたライブラリに対してのみです。

Makefile が現在次のようになっている場合:

SDLLIBS=`sdl-config --libs`

次のように変更します。

SDLLIBS=-Wl,-Bstatic `sdl-config --static-libs` -Wl,-Bdynamic

これらは実際にはUnix ライクなシステムで行うべき-staticことと同じですが、Windows の場合のように GCC に単純なフラグを使用すると、Unix ライクで通常ほど多くのエラーは発生しません。

于 2009-02-08T03:52:49.217 に答える
2

このSDLメーリングリストの投稿を介して、sdl開発ツールにはsdl-configスクリプトが付属しているようです。このスクリプトは、-static-libsフラグとともに使用して、使用する必要のあるリンカーフラグを決定できます。

于 2009-02-04T15:45:56.973 に答える
0

これは、SDLライブラリがLGPLライセンスの下にあるためです。

libsを静的にリンクしたい場合(再コンパイルすればそれができます。ただし、makefileをハッキングする必要があります)、互換性のあるオープンソースライセンスの下にゲームを配置する必要があります。

SDL-libsを使用するほとんどのプログラムはクローズドソースであるため、SDL-libsは共有ライブラリとして提供されます。二項分布は、ほとんどの人が必要とする形式で提供されます。

于 2008-09-22T16:20:43.067 に答える