2017-02-17 9 views
0

私はクロスプラットフォームのC++アプリケーションを開発していますが、当面はlinuxで動作するようになっています。このアプリは、PocoやBoostのようなサードパーティのライブラリを使用しています。Ubuntu Desktopのバージョンで作業しています。ヘッダーはusr/local/includeに含まれていますが、.soファイルはusr /ローカル/ lib。
このアプリを配布したいのであれば、自分のソースコード(実行可能ファイル)+サードパーティのライブラリのヘッダとファイルをパッケージ化するだけで十分です。アプリを実行するには?サードパーティ製のライブラリを使ったLinux C++配布可能なアプリケーションのデプロイ

+0

なぜアプリケーションバイナリでcppファイルとヘッダーファイルを配布する必要があると思いますか? – IInspectable

+0

まず、使用しているすべてのライブラリのライセンスを読んでください。 – deviantfan

+2

いくつかのLinuxディストリビューションにパッケージされているこれらの事柄のうちのいくつかを持っている人といえば、独自のコードをパッケージ化して、独自のウェアーズをコンパイルしてインストールするために依存関係をインストールする必要があります。独自のRPM仕様ファイルを提供する場合、または独自のパッケージの一部として同等の機能を実行するために必要なAPTを提供する場合は、フリーブラッディーポイントを使用します。 –

答えて

1

第三者コードのライセンスを確認してください。それがGPLの場合、あなたのダウンロードにソースコードのtarballを含めてください。後で何かの責任を負うことはないので、最も簡単です。そうしないと、Debian/Ubuntuがアーカイブミラーから6年後にそれを取り除いても、それを求めている人のためにソースを生成することには依然として責任があります。

次に、コードをスタンドアロンのLinuxアプリケーションにすることに目を向けます。これを行うには、必要な共有ライブラリをすべて自分のディレクトリに入れます。境界を定義する場所を選択します。システムのCライブラリ、OpenGL、SDLなどに頼ることができ、それらを束ねる必要はありません。

$0(スクリプトの完全名であるshという変数)を使用するシェルスクリプトを作成して、実行中の場所を調べます。 LD_LIBRARY_PATHdirname "$0"に設定してからexec realprogram [email protected]

このようにすれば、将来的にシステムでコードを実行できます。 Quake 3がLinux用にどのようにパッケージ化されているかを見てください。

+0

私は私の例でこの方法で間違っている場合は、私はIDEまたはMakefileの例でビルド手順からこのフォルダを除外するための方法を見つけることができなかったので、usr/local/includeの – dk13

関連する問題