2016-03-23 6 views
-3

現在、ライブラリをc(特にlibsndfile)にインストールしようとしています。私は「インストール」とライブラリが必要だと私に伝えています。私は混乱しています、私は正確にライブラリをインストールすることによって何をしていますか?Cインストールされたライブラリ - これは何ですか?

ヘッダーとソースコードファイルだけではないのはなぜですか?

私はこれをグーグルで試しましたが、あまりにも多くの成功を収めていません。誰かがこれを説明する記事を説明したり、推薦したりするのを心配していますか?

は、あなたのプロジェクトは、これらのヘッダファイルがどこにあるか知っている必要があるヘッダファイルをインクルードするためには、

+1

ライブラリをインストールすると、関連するファイルをさまざまな場所に配置するだけで、コンパイラ/リンカがそれらを見つけることができます。これには、ライブラリに必要な他のファイルも含まれます。例えば、設定ファイルは –

+0

@EdHealです。詳しい情報を提供できますか?私はそれをより低いレベルで理解したいと思います。 – Izzo

+1

さらに詳しい情報が必要ですか?可能性として、あなたの設定に固有のいくつかのファイルを作成する可能性があります。その後、ファイルを関連する場所にコピーし、さまざまなファイルのアクセス許可を設定します。インストーラは他のことをすることができますが、通常は合計で –

答えて

2

、ありがとうございました。 となります。プリプロセッサーの位置は通常-Iですが、便宜上、システムにはデフォルトで検索する一連のディレクトリがあります。これは「インクルードパス」と呼ばれます。 /usr/include,/usr/local/includeなどの場所が典型的である。

ライブラリをインストールすることは、通常、インクルードパスに入れることを意味します。 sndfile.hはおそらく/usr/local/include/sndfile.hに入ります。

ライブラリのコードは少し異なります。インストールプロセスは、コードをすべてのプロセスが使用できるshared libraryにコンパイルします。共有ライブラリを使用することで、すべてのプログラムにコンパイルするのではなく、コードサイズとメモリ使用量がシステム全体で減少します。ヘッダーファイルと同様に、共有ライブラリはライブラリパスにあります。 /usr/libおよび/usr/local/libが一般的な例です。

共有ライブラリには、アップグレードされているすべてのプログラムもアップグレードされるという利点があります。これは、バグの修正やセキュリティホールの埋め込みに非常に適しています。欠点は、共有ライブラリがバグやセキュリティホールを導入したり、インタフェースを変更した場合、それを使っているすべてのプログラムに影響を与えます。


インストールプロセスは、プロジェクトのソースのREADMEまたはINSTALLファイルに記載しなければなりません。通常は...

./configure 
make 
make check 
make install 

通常、これはパッケージマネージャーでより安全に簡単に実行できます。例えば、Debian has a libsndfile packageUbuntuと同じです。そうすれば、最新の状態に保たれます。


別のライブラリに依存するプログラムを配布する場合は、3つの選択肢があります。

まず、ユーザーが手動でそのライブラリをインストールするようにします。これはほとんどのユーザーにとって痛みです。

次にパッケージシステムlike that which comes with Ubuntuを使用してソフトウェアをパッケージにします。次に、ライブラリのパッケージに依存関係を宣言することができます。これは良いですが、すべての主要な配布用にパッケージを作る必要があります。

ソースコードと共にライブラリを配布することができます。ソースコードがビルドされたら、ライブラリもビルドします。プログラムをバイナリとして配布する場合は、コンパイルされたライブラリも配布することができます。これは最近、コンパイルされたコードで充実したディレクトリと必要なサポートライブラリとフレームワークのアプリケーションがたくさんあります。例はthe OS X .app bundleです。

関連する問題