2017-10-20 7 views
0

私は配布したい小さなゲームを持っていますが、必要な共有ライブラリをすべて同梱していますので、ユーザーはインストールするための依存関係がありません。ゲーム(linux)にはどの共有ライブラリが同梱されていますか?

これは、LDDの出力です:

linux-vdso.so.1 (0x00007fff311c4000) 
    libm.so.6 => /usr/lib/libm.so.6 (0x00007fcca3449000) 
    libdl.so.2 => /usr/lib/libdl.so.2 (0x00007fcca3245000) 
    libGL.so.1 => /usr/lib/libGL.so.1 (0x00007fcca2fba000) 
    libGLEW.so.2.1 => /usr/lib/libGLEW.so.2.1 (0x00007fcca2d12000) 
    libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007fcca29f6000) 
    libSDL2_image-2.0.so.0 => /usr/lib/libSDL2_image-2.0.so.0 (0x00007fcca27d3000) 
    libSDL2_ttf-2.0.so.0 => /usr/lib/libSDL2_ttf-2.0.so.0 (0x00007fcca25cb000) 
    libSDL2_mixer-2.0.so.0 => /usr/lib/libSDL2_mixer-2.0.so.0 (0x00007fcca237c000) 
    libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007fcca215e000) 
    libc.so.6 => /usr/lib/libc.so.6 (0x00007fcca1da7000) 
    /lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007fcca3a68000) 
    libGLX.so.0 => /usr/lib/libGLX.so.0 (0x00007fcca1b75000) 
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fcca1836000) 
    libXext.so.6 => /usr/lib/libXext.so.6 (0x00007fcca1624000) 
    libGLdispatch.so.0 => /usr/lib/libGLdispatch.so.0 (0x00007fcca136e000) 
    librt.so.1 => /usr/lib/librt.so.1 (0x00007fcca1166000) 
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007fcca0ea0000) 
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007fcca0c77000) 
    libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007fcca0a67000) 
    libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007fcca0830000) 
    libz.so.1 => /usr/lib/libz.so.1 (0x00007fcca0619000) 
    libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007fcca0380000) 
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00007fcca017c000) 
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007fcc9ff76000) 
    libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007fcc9fc63000) 
    libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007fcc9fa37000) 
    libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007fcc9f7c4000) 

にはどうすれば任意のLinuxディストリビューションではデフォルトで来たものを知っていますし、どれが私は私のゲームに同梱されなければなりませんか?

+1

近代的なディストリビューションには、すべてのものがあります。 –

+0

これらは利用可能ですが、必ずしもそうではありませんが、リストされたバージョン –

答えて

0

Linux/Unixアプリケーションをバイナリではなくソースコードとして配布するのは、さまざまなプラットフォームで動作するバイナリを配布することが非常に難しい理由があります。これは、ディストリビューション固有のソフトウェアリポジトリがLinuxのような特徴であるのと同じ理由です。

問題は、あなたがリストしたライブラリは一般的に利用可能ですが、それらのバージョンは配布ごとに異なります。それは、LinuxがさまざまなCPUやハードウェアアーキテクチャ上で実行する本当の根本的な問題を無視することです。

もしあなたのプログラムが一般的に関心があるのであれば、(少なくとも技術的には)最低限、供給を扱うのは、例えばgithub上でソースコードを利用できるようにすることです。分布。ディストロのメンテナーは、このようなことをするための自動化された方法を持っています。

あなたが実行できない場合は、実行可能ファイルすべてを標準Cライブラリとプラットフォームライブラリを除いて配布する必要があるかもしれません。つまり、Cライブラリのlibdm、libpthread、およびlibmの互換性を前提とすることができます。あなたが供給する必要があるその他のもの。ライブラリを個別のファイルとして提供することもできますし、LD_LIBRARY_PATHを使用可能にするように設定するスクリプトやラッパーや、実行可能ファイルにリンクするだけのものもあります。率直に言えば、ホストシステムがビルドシステムよりもずっと古いか新しい場合、プラットフォームライブラリでさえも互換性がない可能性があります。

実行時にアプリケーションをライブラリにロードして、ホストシステムで適切なものを探す何らかのロジックを持たせることができます。おそらく、互換性をチェックします。これは、Java JVMが通常行うことです。

あなたのアプリケーションを1つのLinuxディストリビューションに構築することはうまくいかないでしょう。残念ながら。

関連する問題