C ライブラリの種類

1 概要

C 言語では、コードを再利用するためにライブラリとしてまとめる方法が 2 種類あります。静的ライブラリ (Linux: .a、Windows: .lib) は実行ファイルにリンク時に組み込まれ、動的ライブラリ (Linux: .so、Windows: .dll) は実行時に読み込まれます。それぞれにメリット・デメリットがあり、用途に応じて使い分けます。

このリポジトリの prod/calc/ はこの 2 種類のライブラリを意図的に使い分けています。libcalcbase (add / subtract / multiply / divide) は静的ライブラリとして提供され、libcalc (calcHandler) は動的ライブラリとして提供されます。libcalclibcalcbase に依存しており、ライブラリの生成時に参照されます。src/shared-and-static-calc/ は両方を同時にリンクするサンプルです。

また、.NET 連携においては libcalc.dll (Windows) または libcalc.so (Linux) を P/Invoke で呼び出す実装が prod/calc.net/ に含まれています。ライブラリの種類と動作の違いを理解することは、このリポジトリのビルド構成を理解するための重要なステップです。

2 習得目標

2.1 プラットフォーム共通

2.2 Linux

2.3 Windows

3 学習マテリアル

3.1 公式ドキュメント

3.2 チュートリアル・入門

4 このリポジトリとの関連

4.1 使用箇所 (具体的なファイル・コマンド)

ライブラリの構成:

ライブラリ構成一覧
ライブラリ 種別 Linux Windows 実装ファイル
libcalcbase 静的 libcalcbase.a libcalcbase.lib prod/calc/libsrc/calcbase/
libcalc 動的 libcalc.so libcalc.dll prod/calc/libsrc/calc/

各プログラムのリンク方式:

各プログラムのリンク方式
プログラム リンク ソース
add libcalcbase を静的リンク prod/calc/src/add/add.c
calc libcalc を動的リンク prod/calc/src/calc/calc.c
shared-and-static-calc 両方をリンク prod/calc/src/shared-and-static-calc/

ヘッダーファイル:

  • prod/calc/include/libcalc_const.h - 定数定義 (CALC_SUCCESS など)
  • prod/calc/include/libcalcbase.h - 静的ライブラリ用ヘッダー
  • prod/calc/include/libcalc.h - 動的ライブラリ用ヘッダー

4.2 関連ドキュメント