[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

11. 他の言語でlibtoolを使用する

libtoolは最初に,C言語での共有ライブラリを書くことに対するサポートを加 えるために実装されました.しかし,時間が経ち,プログラマが好みのプログ ラム言語での共有ライブラリの便利さを自由に得られるように,libtoolは他 の言語と統合されています.

この章は,libtoolが他の言語と相互作用する方法と,Cを用いない場合に必要 とされる特記事項を記述します.


11.1 C++に対するライブラリを書く

C++コードのライブラリを作成することは,そのオブジェクトファイルがCのも のと三つの点で異なっているだけので,かなり簡単な処理になります.

  1. 名前をmangleするため,C++ライブラリはC++コンパイラで作成されたものだけ 利用可能です.この決定は,コンストラクタ,例外処理,そしてRTTIのような 機能の実装との衝突からユーザを守るため,C++の設計者によってなされまし た.

  2. システムによっては,ダイナミックリンカがダイナミック(すなわち実行時)に 初期化の実行するため,C++コンパイラは特別な動作を行なう必要があります. これは,そのようなライブラリとリンクするため,`ld'を直接呼び出す べきではなく,その代わりにC++コンパイラを使用するべきだということを意 味します.

  3. C++コンパイラは,いくつかの標準C++ライブラリとデフォルトでリンクします が,libtoolは,これらのライブラリがどれかを知らないため,それに対して リンクする方法を調査するため,ライブラリ内部の依存の解析さえ実行できま せん.それゆえ,C++プログラムやライブラリとリンクするため`ld'を実 行すると失敗すると思われます.

これらの問題のため,C++プログラムとライブラリをコンパイルしリンクする ために,常にC++コンパイラを使用するように設計されています.プログラム のmain()関数のインスタンスによっては,スタティックなC++オブジェ クトを適切に初期化するため,C++コンパイラでコンパイルする必要があるも のもあります.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.