Ubuntuはライブラリファイルをどこに保存しますか?


17

cコンパイルで使用する独自のライブラリを追加したいのですが、ubuntuがそれをどこに保存するのか実際にはわかりません。


5
この店では/ usr / libには/ usr /含める
karthick87

/ usr / includeでライブラリを見つけましたが、どのように配置すればよいですか?ヘッダーファイルとACファイルをその近くに置くべきですか、それともヘッダーと関数を1つの.hファイルに一緒に書くべきですか?
david25

3
ライブラリとヘッダーは異なります。/usr/includeにはライブラリが含まれません。ライブラリから使用可能な関数/オブジェクトの定義であるヘッダーが含まれます。質問を改善する必要があります。何を達成しようとしているのか理解するのは困難です。
ジョアンピント

回答:


11

あなたの質問に対するあなたのコメントに基づいて、私があなたが本当に求めているのは「私が書いたカスタムライブラリをどのようにインストールし、どこに置くべきですか?」であると思います。

一般に、ユーザーがマシン上で他のユーザーのためにローカルに構築されたものは、/ usr / localツリーに配置されます。ヘッダーファイルは/ usr / local / includeに移動する必要があります。コンパイルされたライブラリは/ usr / local / libに移動します。.cファイルはライブラリの一部ではなく、ソースの一部であり、エンドユーザーが使用するために通常インストールされないものではありません。これらの場所のいずれかにファイルを配置するには、rootアクセスが必要になります。

ライブラリをビルドするには、最初にビルドする必要があります。静的ライブラリと動的(共有)ライブラリのどちらを使用するかを決定します。共有ライブラリの作成に関する詳細は、セクション3.4、共有ライブラリの作成(http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html)にあります。(彼らは物を置く場所についての勧告も持っています-ほとんどの開発者は意見を1つか3つ持っています:-))


11

ライブラリに応じて、ubuntuはそのライブラリを主に3つの場所に保存します

  1. / lib
  2. / usr / lib
  3. / usr / local / lib

以下はファイルシステム階層標準からのものです

/ lib

/ libディレクトリには、システムを起動し、ルートファイルシステムでコマンドを実行するために必要な共有ライブラリイメージが含まれています。/ binおよび/ sbinのバイナリによって。

/ usr / lib

/ usr / libには、ユーザーまたはシェルスクリプトによって直接実行されることを意図していないオブジェクトファイル、ライブラリ、および内部バイナリが含まれます。[22]

アプリケーションは、/ usr / libの下の単一のサブディレクトリを使用できます。アプリケーションがサブディレクトリを使用する場合、アプリケーションが排他的に使用するすべてのアーキテクチャ依存データは、そのサブディレクトリ内に配置する必要があります。

/ usr / local / libにはローカルライブラリ、つまりこのシステムに固有のライブラリが含まれていますが、FHSで/ usr / local / libへの参照が見つかりません。/usr/localの説明のみが含まれています。


2

UbuntuはFilesystem Hierarchy Standard(http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard)に準拠しているため、通常のアプリケーションライブラリは/ usr / libに保存する必要があります。

ライブラリの開発/管理は簡単なテーマではないことに注意してください。いくつかの詳細なドキュメントを読む必要があります。ここに素敵なチュートリアルがあります:http : //www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html


0

ライブラリを見つけることができる場所をコンパイラに伝える必要があります。ライブラリへのパスが「/path/to/lib/libfoo.a」であると仮定すると、プログラム「hello.c」を次のようにコンパイルおよびリンクできます。

gcc -L/path/to/lib -lfoo hello.c

これはUbuntuに固有のものではありません。実際、私が知っているすべてのCコンパイラはこれらのフラグをサポートしています。


-2

Ubuntuでは、それらはにあり/usr/includeます。


1
ヘッダーファイルはにあり/usr/includeます。ライブラリの実際のバイナリはそこに保存されません。ヘッダーはライブラリの一部と見なされますが、個別にインストールする必要があり、ライブラリを使用するプログラムのコンパイルに使用されます。ライブラリを使用するプログラムがコンパイルされると、ヘッダーファイルは不要になります。
エリアケイガン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.