Tetsuo Handa
from-****@I-lov*****
2010年 4月 9日 (金) 23:48:10 JST
熊猫です。 Hiroshi Shinji さんは書きました: > 小さいことですが、ライブラリ名は、ccstools とかではなく、libccs or libtomoyo > などにしたほうが良くないですか? lib〜.so というのがライブラリの命名規則ですので、 /usr/lib/libccstools.so.1 が 正しいパス名です。いつも /usr/lib/ccs と入力しているので、 lib/lib という 繰り返しに気が付いていなかったようです。(^x^; > > (1)ccstools パッケージに含まれていない別のアプリケーション(例えばGUI > > プログラム)から /usr/lib/ccstools.so.1 をリンクしたいと考えていますか? > > それとも、 ccstools パッケージ(に含まれている /usr/sbin/ccs-\* )から > > だけしかリンクされないと考えていますか? > > Yes. (2)の返事から考えると、この Yes は前者の意味ですね。 すると、 ccs-tools のリリース毎にバイナリ互換性が無くなるというのは なるべく避けるべきということですね。 > > (2)(1)が前者の場合、 /usr/lib/ccstools.so.1 のソースは > > ccs-tools パッケージとは分離したほうが都合が良いですか? > > 特にこれはどちらでも良いかも。 > ただ一緒の場合、makeするときにライブラリだけビルド、とかしてくれると > うれしいですね。 > これは Makefile の中で libccstools.so: ccstools.c ccstools.h $(CC) $(CFLAGS) -fPIC ccstools.c -shared -Wl,-soname,libccstools.so.1 -o libccstools.so.1.0.0 ln -sf libccstools.so.1.0.0 libccstools.so のようになっているので、 make all の代わりに make libccstools.so を実行すれば OKですね。 > > (3)(1)が前者の場合、別のアプリケーションから呼び出せるようにするために > > /usr/lib/ccstools.so.1 には ccstools パッケージ内では1個のプログラム > > からしか呼ばれない関数であっても詰め込んだ方が良いですか? > > > > (4)(1)が前者の場合、別のアプリケーションから呼び出せるようにするために > > /usr/lib/ccstools.so.1 内の関数は static 関数として宣言しないように > > する方が良いですか? > > 利用可能な関数は、取捨選択する必要はあります。 プログラム単位ではなく関数単位で取捨選択するとなると、デフォルトでは ccstools.c に含まれる全ての関数を static に設定し、コンフィグを使って関数毎に static キーワードを除外できるようにすれば、参照されなかった static 関数を コンパイラの最適化機能により切り捨ててもらうことができる・・・かな?