c/c++のライブラリーとビルドについて

ということで、c++でのヘッダーライブラリ関係を全部まとめます。

ソースコードをビルドするまでの流れ

  1. プリプロセス(preprocess) #include は、<> 内に指定したヘッダーファイルの中身をソースコード内に組み込むプリプロセッサ指令です。 つまり、定義が書かれていない入出力関係だけが書かれたヘッダーを読み込むことは、プロトタイプ宣言にだいぶ近いものがあると思います。

  2. コンパイル (compile) 入出力関係を保ったまま、ソースコードを

  3. アセンブル (assemble)

  4. リンク (link) 制御のジャンプ先をここで決めるわけです。

ヘッダーとライブラリはセット

関数をオブジェクトファイルにして、ほかのソースコードから呼び出せるようにしたものをライブラリといいます。 ソースコードはライブラリの入出力を知るために、ヘッダーファイルを使います。だから絶対にセットなんです。

3rd partyのライブラリをどうやって使うか?

ライブラリの配布のされ方はいろいろあると思うが、大きく分けて二つに分けられると思う。

  1. パッケージマネージャーを通してライブラリを配布
  2. githubでソースが公開されているライブラリを配布 どちらも最終的に使うときには、ヘッダーをインクルードして、ライブラリをリンクするんですが、使えるようになるまでが違います。ってことです。

1. パッケージマネージャーを通してライブラリーを入手する方法

これは、aptとかでライブラリを入手するあれです。 例えば、boost libraryとかは、aptで次のようにインストールできるわけですね。

sudo apt install libboost-all-dev

で、ソースコード上でプログラムを使いたいときは、例えば、

#include<boost/asio.hpp>

でインクルードして、 さらに、ビルド時にライブラリーをリンクするのを忘れないでください。はい。 ただ、boostはどうやらheader-only-libraryということで、リンクする必要はなさそうですね。はい。大丈夫です。

2. githubでソースが公開されているライブラリ

githubからソースコードを持ってきてください。 で、最近は大体cmakeがついていますね。cmakeでMakefileを作って、makeでビルドしてください。 最後に、make installでライブラリとヘッダーのデフォルトのサーチパスにヘッダーとライブラリをおいてくれます。ハイよろしく。