avahi

コンパイル完了。
コンパイルできないと思ったら、avahiとlibdbusの間の互換性の問題。libdbusの新しいバージョンで削除された関数をavahiで使っていて、リンクエラーになっていた。avahiのソースコードSVNリポジトリから取り寄せたらコンパイルできた。
やはり、avahiもBonjour同様、デーモンが走っていないとBrowseも出来ない。


avahiは依存関係が多いな…libpthread、libdbus、libexpat、libnsl、libdl。libnslとlibdlはglibcの中にあって、libpthreadもglibcの一部。問題はlibexpatとlibdbus、大ごとだなぁ。libexpatはまだ良いか。libdbus、コンパイルにGLIBがいる?それはキツイ。
VIVER本体はある意味ディストリビューションを作っているようなもので、ライブラリの依存関係を全部解決して入れないといけない。ライセンスを気にすると、ソースコードからmakeできるようにするべきだろうから、どこかのディストリビューションのバイナリを借りてくるというのも気が引ける。


バイナリのサイズは、libpthreadはVIVERメインプログラムで使うかもしれないので除いて、

60K     libavahi-client.so.3.1.3
40K     libavahi-common.so.3.4.1
184K    libavahi-core.so.4.0.3
12K     /lib/libdl-2.3.5.so
72K     /lib/libnsl-2.3.5.so
188K    libdbus-1.so.3.0.0
16K     libdaemon.so.0.2.4
96K    avahi-daemon

となった。クライアントプログラム本体は、libavahi-client.soのライブラリを使ってVIVERメインプログラムに組み込むことになると思う。avahiを使うなら。
合計668KB。共有ライブラリってstripして良かったけな?しなかったらもっと増える。


対するApple Bonjourは、

16K     libdns_sd.so
144K    mdnsd

と160KB。ライブラリの依存はlibcだけ。クロスプラットフォームに作ろうとすると、ライブラリを使いたくないのかもしれない。GPLにしたくなかっただけか?
理由はどうあれ、依存関係が少ないのはポイント高し。


ということで、Appleのlibdns_sd.soを使ってBrowseクライアントを作ってみることにする。
あいや、その前にライセンスを確認。日本語訳無いかなぁ…。無いだろうなぁ…。
APSL 2.0はOSI公認なので、The Open Source Definitionは満たしているはず。