ライブラリの依存関係


main.cがlibtest1.aに依存し、
libtest1.aがlibtest2.aに依存している場合のビルドは、

gcc main.c -ltest1 -ltest2 

依存先を後ろにつけます。


では、ライブラリが双方向(相互)に依存している場合はどうするのか?

これまた、

gcc main.c -ltest1 -ltest2

でもいけるし、

gcc main.c -ltest2 -ltest1

でもいけちゃう。

「依存先は後」の法則(?)に忠実に、

gcc main.c -ltest1 -ltest2 -ltest1

とする必要はない(もちろんこれでも通る)。


この場合だと、

gcc main.c -ltest2 -ltest1

はリンクエラーで、

gcc main.c -ltest1 -ltest2

ならOK.


とりあえず、依存矢印の順にライブラリを指定していけばいいのかな。。。

リンク(リンカ)の仕組みをまったくしらないから、すっきりしない。
ちょっとずつ勉強していきたい〜


まぁ、ペイントでUMLを書くと意外に楽しいってことが分かっただけでも(^^;