c libraries how install
このC ++ライブラリのチュートリアルでは、C ++のライブラリとは何か、そのタイプ、およびC ++標準ライブラリのインストールと使用法について説明します。
ライブラリは、再利用可能なコードまたは関数のパッケージとして定義できます。さまざまなアプリケーションが同じライブラリを何度も使用できます。ライブラリを持つことで、再利用性、つまりオブジェクト指向プログラミングの原則の1つを実現します。
例えば、 sin、cos、tan、absなどの数学関数をライブラリにすることができます。これを行うことで、アプリケーションごとにこれらの関数を何度も作成する必要がなくなります。ライブラリを参照して、アプリケーションでコードを再利用できます。
=> ゼロからC ++を学ぶには、ここにアクセスしてください。
学習内容:
C ++ライブラリ
C ++ライブラリは通常、次のもので構成されます。
ヘッダーファイル: これは、ライブラリが提供する機能を定義します。
プリコンパイルされたバイナリ: このファイルには、機能の実際の実装が含まれています。この実装は、機械語にプリコンパイルされています。
ライブラリはほとんど変更されないため、ライブラリを再コンパイルする理由がないため、ライブラリはプリコンパイルされています。第二に、プリコンパイルされたライブラリは機械語形式であるため、誰も直接アクセスできないため、セキュリティで保護されています。したがって、ライブラリは保護されます。
C ++には、次の2種類のライブラリがあります。
- 静的ライブラリ
- ダイナミックライブラリ
静的ライブラリ
静的ライブラリはアーカイブとも呼ばれます。静的ライブラリは、それを参照する実行可能ファイルの一部となるライブラリです。したがって、アプリケーションを開発してその中の静的ライブラリを参照すると、静的ライブラリの内容がアプリケーション内で置き換えられます。
Windowsの静的ライブラリの拡張子は通常「.lib」ですが、Linuxの静的ライブラリの拡張子は「.a」(またはアーカイブ)です。
プログラム参照静的ライブラリを持つことの利点の1つは、実行可能ファイルと一緒に静的ライブラリを配布する必要がないことです。これは、静的ライブラリの内容がアプリケーションの一部であり、個別に提供する必要がないためです。
この特定の利点は、実行可能ファイルがかさばる可能性があり、ライブラリが実行可能ファイルの一部であるために無駄になるスペースが多すぎるため、欠点になります。
静的ライブラリを持つことのもう1つの欠点は、静的ライブラリが変更された場合、それを参照する実行可能ファイルも更新する必要があることです。
ダイナミックライブラリ
ダイナミックライブラリは「共有ライブラリ」とも呼ばれます。 Windowsでは、ダイナミックライブラリの拡張子は「.dll」(ダイナミックリンクライブラリ)です。 Linuxでは、ダイナミックライブラリの拡張子は「.so」(共有オブジェクト)です。
ダイナミックライブラリは、実行時にアプリケーションにロードされるルーチンで構成されるライブラリです。アプリケーションがダイナミックライブラリを参照する場合、ライブラリはアプリケーションの一部にはなりませんが、別個のユニットとして残ります。
ダイナミックライブラリには、ライブラリの1つのコピーを多くのアプリケーションで共有できるため、スペースを節約できるという利点があります。さらに別の利点は、ダイナミックライブラリが別個のユニットであるため、ダイナミックライブラリが変更されてもアプリケーションの実行可能ファイルが変更されないことです。
ダイナミックライブラリの唯一の欠点は、ライブラリをロードして参照するために別のプログラムが必要になることです。これは面倒な場合があります。この問題を解決するために、「ライブラリのインポート」ルーチンを使用します。
アン ライブラリをインポートする は、ダイナミックライブラリをプログラムに自動的にロードして使用するメカニズムです。 Windowsでは、インポートライブラリは.dllファイルと同じ名前の小さな静的ライブラリ(.lib)を保持し、コンパイル時にプログラムにリンクされます。
これが行われると、動的ライブラリは静的ライブラリであるかのように使用されます。 Linuxオペレーティングシステムでは、ダイナミックライブラリまたは共有オブジェクト(.so)ファイルは、ダイナミックライブラリとしてだけでなくインポートライブラリとしても機能します。 Linux OSのほとんどのリンカーは、ダイナミックライブラリのインポートライブラリを構築できます。
C ++ライブラリをインストールして使用する方法
これらのライブラリをインストールしてアプリケーションで使用するために実行する必要のあるいくつかの手順を見てみましょう。
#1)ライブラリの取得
アプリケーションでライブラリを使用するには、最初にライブラリを取得する必要があります。ライブラリはプリコンパイルされている場合があります。そのような場合は、オペレーティングシステム用のライブラリをダウンロードするだけです。ライブラリがプリコンパイルされていない場合は、ソースコードをダウンロードして、マシンでコンパイルする必要があります。
Windowsでは、ライブラリの拡張子は通常.zipですが、Linuxオペレーティングシステムでは、ライブラリパッケージは「.RPM」として配布されます。
#2)ライブラリをインストールする
ライブラリを取得したら、次のステップはライブラリをインストールすることです。 Windowsへのインストールは、ライブラリの内容をフォルダに解凍するのと同じくらい簡単です。 Linuxでは、パッケージマネージャーを呼び出してライブラリをインストールできます。
#3)コンパイラのライブラリパスを含める
コンパイラがライブラリファイルを探す場所を認識できるように、ライブラリのパスを設定する必要があります。これは、Windowsの場合は「include」ディレクトリ、Linuxの場合は「/ usr / include」にすることができます。
#4)ライブラリパスをリンクする
このステップは、リンカがリンクプロセス中にリンクする必要のあるライブラリの正確なパスを知るために実行されます。通常、Windowsの場合は「/ lib」フォルダ、Linuxの場合は「/ usr / lib」フォルダにすべてのライブラリが含まれています。
ライブラリがインストールされると、コンパイラとリンカは使用するライブラリのパスを認識し、ライブラリを使用できるようになります。このプログラムでは、ライブラリ機能を参照できます。プログラムにヘッダーファイルがインクルードされているため、コンパイラは機能をコンパイルできます。
プログラマーは主に開発にIDEを使用するため、IDE自体でライブラリパスを指定します。
C ++の標準ヘッダー/ライブラリ
C ++言語が使用するいくつかの標準ヘッダーまたはライブラリについて説明しましょう。これらのヘッダーについては、C ++チュートリアルのそれぞれのトピックですでに説明しました。
C標準ライブラリ
ANSI C規格は、 C標準ライブラリ または libc これは、Cプログラミング言語の標準ライブラリとして機能します。 C ++には、最初に「c」を追加し、最後に「.h」を削除することにより、C標準ライブラリの各ヘッダーを異なる名前で含めます。したがって、Cのヘッダーxxx.hは、C ++標準では「cxxx」になります。
C標準ライブラリは、マクロ、文字列処理、数学的計算、型定義、入出力処理、メモリ管理などに関連する機能を提供します。
小切手 ここに C標準ライブラリの詳細については。
一般
デフォルトゲートウェイは利用できませんイーサネット
一般的なC ++ライブラリには、以下に示すように次のヘッダーが含まれています。
ヘッダーの名前 | 説明 |
---|---|
タプルの機能を定義します。 C ++ 11以降で使用できます。 | |
多くのコンテナで使用されるアルゴリズムは、このヘッダーで定義されています。 | |
std :: chrono :: time_point、std :: chrono :: durationおよびclocksなどの時間要素が含まれます。 | |
このヘッダーは、一般的なアルゴリズムで使用される関数オブジェクトを提供します。 | |
イテレータのクラスとテンプレートが含まれています。 | |
C ++のメモリ管理機能を定義します。 | |
std :: logic_errorおよびstd :: runtime_errorを含む標準の例外クラスを定義します。どちらもstd :: exceptionから派生しています。 | |
std :: pairなどのテンプレートクラスまたはstd :: rel_opsのような名前空間がこのヘッダーで定義されています。 |
ストリームと入力/出力
ヘッダーの名前 | 説明 |
---|---|
テンプレートクラスstd :: ostreamおよびその他の出力用サポートクラスの機能が含まれています。 | |
ファイルベースの入出力の機能を提供します。 | |
精度、ベースなどの出力フォーマットの機能が含まれています。 | |
iostream操作の基本機能が含まれています。 | |
いくつかのI / O関連のクラステンプレートの前方宣言を提供します。 | |
C ++の入力と出力の基本を提供します。 | |
テンプレートクラスstd :: istreamおよびその他の入力用サポートクラスの機能が含まれています。 | |
文字列操作に使用されるテンプレートクラスstd :: stringstreamおよびその他のサポートクラスを定義します。 | |
外部ファイルや文字列など、特定のタイプの文字シーケンスとの間で読み取りおよび書き込みを行うための機能が含まれています。 |
言語サポート
ヘッダーの名前 | 説明 |
---|---|
シングルエンドキューであるstd :: queueと優先キューであるstd :: priority_queueの機能を実装します。 | |
このヘッダーには、すべての例外の基本クラスであるstd :: exceptionなど、例外処理のさまざまなタイプと関数が含まれています。 | |
このヘッダーには、基本的な数値プロパティを記述するために使用されるテンプレートクラスstd :: numeric_limitsが含まれています | |
C ++メモリ管理の基本に関連するnewおよびdelete演算子とその他の関数が含まれています。 | |
C ++実行時型情報を操作するための機能を提供します。 |
文字列
ヘッダーの名前 | 説明 |
---|---|
このヘッダーには、C ++の標準の文字列クラスとテンプレートが含まれています。 | |
これはC ++ 11の新機能です。正規表現を使用して文字列を照合するためのユーティリティを提供します。 |
ローカリゼーション
ヘッダーの名前 | 説明 |
---|---|
このヘッダーにはロケール機能があります。クラスを定義し、ロケールに固有の情報をカプセル化して操作する関数を宣言します。 | |
さまざまな文字エンコードのコード変換ファセットが含まれています。 |
コンテナ
ヘッダーの名前 | 説明 |
---|---|
固定サイズの配列のコンテナであるstd :: arrayの機能が含まれています。 C ++ 11およびTR1に新しく追加されました。 | |
特殊なコンテナクラスstd :: bitset、ビット配列。 | |
std :: deque、両端キューの機能が含まれています。 | |
単一リンクリストであるstd :: forward_listのヘッダー。 C ++ 11およびTR1に新しく追加されました。 | |
二重リンクリストであるstd :: listの機能が含まれています。 | |
std :: mapおよびstd :: multimap、ソートされた連想配列およびマルチマップの機能が含まれています。 | |
std :: setおよびstd :: multiset、ソートされた連想コンテナーまたはセットのヘッダーがあります。 | |
コンテナアダプタクラスstd :: stack、スタックを提供します。 | |
このヘッダーには、ハッシュテーブル機能であるstd :: unordered_mapおよびstd :: unordered_multimapが含まれています。 C ++ 11およびTR1の新機能。 | |
std :: unordered_setおよびstd :: unordered_multisetの機能を提供します。 C ++ 11およびTR1の新機能。 | |
動的配列であるstd :: vectorの機能を提供します。 |
スレッドサポートライブラリ
ヘッダーの名前 | 説明 |
---|---|
C ++ 11以降のスレッドを操作するための新しいクラスと名前空間。 | |
C ++ 11以降に新しく追加されました。相互排除のすべてのメカニズムであるミューテックス、ロック、1回の呼び出しなどを提供します。 | |
何らかの条件が満たされたことが他のスレッドから通知されるまで、またはシステム時刻に達するまでスレッドをブロックするために使用される同期プリミティブを提供する条件変数の機能が含まれています。 C ++ 11以降の新しい追加。 | |
このヘッダーには、C ++プログラムが1つのスレッドで取得するために使用できるコンポーネントと、同じスレッドまたは別のスレッドで実行された関数からの結果(値または例外)が含まれています。 |
数値ライブラリ
ヘッダーの名前 | 説明 |
---|---|
ヘッダーには、複素数を表現および操作するためのさまざまな関数が記述されています。複素数のクラステンプレートもあります | |
(疑似)乱数を生成する機能 | |
このヘッダーには次のものが含まれます -5つのクラステンプレート(valarray、slice_array、gslice_array、mask_array、およびindirect_array)、 -2つのクラス(スライスとgslice)、 -値の配列を表現および操作するための一連の関連する関数テンプレート。 | |
一般的な数値演算が含まれています。 |
結論
C ++ライブラリとそのタイプ、およびライブラリをインストールしてセットアップする手順について詳しく説明しました。
標準C ++ライブラリには、さまざまな機能を提供するさまざまなヘッダーが含まれていることがわかりました。これらの標準ライブラリヘッダーを使用して、C ++でさまざまなアプリケーションを開発できます。
=> ここですべてのC ++チュートリアルを確認してください。