1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cプログラムで静的と動的ライブラリを作る&Makefileコピペ用

Posted at

静的ライブラリと動的ライブラリの違い

静的ライブラリ:コンパイル時に実行可能ファイルに結合されるライブラリです。
動的ライブラリ:実行可能ファイルとは別のファイルとして存在し、実行時にリンクされます。

以上の違いがあります。
それぞれの利点として
静的ライブラリの利点は、実行時に追加のライブラリファイルが必要なくなります。これは実行可能ファイルに静的ライブラリのコードとデータが含まれているからです。
動的ライブラリの利点は実行ファイルのサイズが小さくなり、メモリの使用効率が向上します。これは複数。の実行可能ファイルが同じライブラリを共有できるからです。

動的ライブラリ

動的ライブラリ
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
これで作成できます

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?