[Tomoyo-dev 1236] Re: ccstools のマルチコールバイナリ解消および共有ライブラリ化について

Back to archive index

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 関数を
コンパイラの最適化機能により切り捨ててもらうことができる・・・かな?




tomoyo-dev メーリングリストの案内
Back to archive index