2009-09-23 9 views
5

Linux/UNIXにC++コマンドラインプログラムをインストールするときは、それを元のディレクトリに残しておき、それが既にパス上にあるディレクトリに移動するのではなく、私はメイクを持っているエントリインストール:Linux/UNIXデータファイルをインストールする

さらに少し先を探し
mv ayane /usr/local/bin 

を、私はプログラムを読む必要があるコンフィギュレーション、データおよびスクリプトファイルの完全なディレクトリまたは2、で終わるつもりだ、でいくつかのいくつかの場合には後で変更して保存することができます。

これは、プログラムがデータファイルの場所をどのように知ることができるかという問題につながります。私のUbuntu Linux仮想マシンで/ binを見ると、バイナリファイルしか入っていないので、データファイルは通常はプログラムと同じディレクトリに置かれません。

プログラムで知ることができる場所にデータファイルを置くための通常の解決策は何ですか?

+0

関連性:http://stackoverflow.com/questions/528399/what-should-linux-unix-make-install-consist-of – dmckee

答えて

7

FHSなどのファイルシステムの標準があります(ファイルシステムのレイアウトにはさまざまなアプローチがあります)。

は基本的に、あなたが$prefix/bin/にあなたの実行可能なバイナリを入れ、ホストごとの設定は$prefix/lib$prefix/share、アーチ依存データおよびライブラリに、ユーザのホームディレクトリにユーザーごと、$prefix/etc/にアーチに依存しない静的データを移行し、可変データ通常は/var/lib/になります。

コンパイル時と実行時の両方で設定可能な方がよいです。また、installターゲットを手作業でMakefilesと書かないことも慣例ですが、autotoolsスイート(類似のもの)を見るとよいでしょう。

+2

$ prefix/share/と$ prefixにデータを入れる方が意味があります/ lib/。/etc/ PiedPiper

+2

PiedPiperのように、 '$ prefix/lib'と' $ prefix/share'を参照すると、ファイルが必ずしもそのファイルの直後の子孫になるはずはありませんディレクトリ。 –

2

File System Hierarchy標準をご覧ください。

簡単に言えば、システム全体のファイルが必要なプログラムの場合、configは/etcになるはずです。スクリプトや画像ファイルなどのリソースは/usr/shareにあります。ランタイムデータは/var/runになります。

ユーザーごとのファイルはもちろん、ユーザーのホームディレクトリにあります。

関連する問題