静的ライブラリと動的ライブラリの違い
静的ライブラリ:コンパイル時に実行可能ファイルに結合されるライブラリです。
動的ライブラリ:実行可能ファイルとは別のファイルとして存在し、実行時にリンクされます。
以上の違いがあります。
それぞれの利点として
静的ライブラリの利点は、実行時に追加のライブラリファイルが必要なくなります。これは実行可能ファイルに静的ライブラリのコードとデータが含まれているからです。
動的ライブラリの利点は実行ファイルのサイズが小さくなり、メモリの使用効率が向上します。これは複数。の実行可能ファイルが同じライブラリを共有できるからです。
動的ライブラリ
動的ライブラリ
CC = gcc
CFLAGS = -Wall -Werror -fpic
libmylib.so: mylib.o
$(CC) -shared -o $@ $<
mylib.o: mylib.c
$(CC) $(CFLAGS) -c -o $@ $<
$@
: ターゲットファイル
$<
: 依存関係の最初のファイル
このように書けます。この動的ライブラリを使うときは
$ gcc -o myprogram myprogram.c -L/path/to/library -lmylib
静的ライブラリ
CC = gcc
CFLAGS = -Wall -Werror -fpic
libmylib.a: mylib.o
ar rcs $@ $<
$(CC) -shared -o $@ $<
mylib.o: mylib.c
$(CC) $(CFLAGS) -c -o $@ $<
この動的ライブラリを使うときは
gcc -o myprogram myprogram.c -L. -lmylib
これで作成できます