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して良かったけな?しなかったらもっと増える。
16K libdns_sd.so 144K mdnsd
と160KB。ライブラリの依存はlibcだけ。クロスプラットフォームに作ろうとすると、ライブラリを使いたくないのかもしれない。GPLにしたくなかっただけか?
理由はどうあれ、依存関係が少ないのはポイント高し。
ということで、Appleのlibdns_sd.soを使ってBrowseクライアントを作ってみることにする。
あいや、その前にライセンスを確認。日本語訳無いかなぁ…。無いだろうなぁ…。
APSL 2.0はOSI公認なので、The Open Source Definitionは満たしているはず。