C/C++ 分割コンパイルと静的、動的ライブラリの復習2021年05月20日 12時22分00秒

C も C++ もコンパイラとリンカに渡すオプションはほとんど変らない。

まずは静的ライブラリを C で。

% cc -c -o a.o a.c
% cc -c -o b.o b.c
% cc -c -o c.o c.c
% ar liby.a a.o b.o c.o
% cc -c -o main.o main.c
% cc -o main main.o libx.a
% cc -o main main.o -lx
C++ での動的ライブラリ。
% c++ -c -o i.o i.cpp
% c++ -c -o j.o j.cpp
% c++ -c -o k.o k.cpp
% c++ --shard liby.so i.o j.o k.o
% c++ -c -o main.o main.c
% c++ -o main main.o liby.so
% c++ -o main main.o -ly

静的ライブラリは只単にファイルをまとめた書庫。動的ライブラリはコンパイラを用いて若干特別な形式で記述なので、cc や c++ コマンド。