Windowsのバイナリに限定したネイティブコードのお話ですが…。
- ソースコードをコンパイルするとobjというファイルができる
- 開発環境に含まれているライブラリ類とリンクしてexe(もしくはdll)ができる
という流れは比較的すぐに理解してもらえます。ところが、自分がライブラリ提供側になると、ちょっと気をつける必要があります。言葉よりも図で。
こんなんやらないよーと思うでしょう?でもちゃんと気をつけてライブラリ構成しないとこうなります。私の知っているところでもやった人が多くいます。始末が悪いのは、これ手作りでフレームワークのライブラリ作っていくときには逐次ビルドしていくので、経験の少ない人はなかなか気付かない。ところが、フルビルドをおこなうときになって「そんなシンボルないよー」と言われて蒼い顔するわけです。
もう一つ気をつけたいのは「そのライブラリをどこに配置するか」ということ。なんでもかんでもリンクしていると、結局クライアントにしか必要ではないライブラリをサーバー側に入れざるを得なくなります。ものによっては難しいですけどね。