Go to the first, previous, next, last section, table of contents.
libtoolは最初に,C言語での共有ライブラリを書くことに対するサポートを加
えるために実装されました.しかし,時間が経ち,プログラマが好みのプログ
ラム言語での共有ライブラリの便利さを自由に得られるように,libtoolは他
の言語と統合されています.
この章は,libtoolが他の言語と相互作用する方法と,Cを用いない場合に必要
とされる特記事項を記述します.
C++コードのライブラリを作成することは,そのオブジェクトファイルがCのも
のと三つの点で異なっているだけので,かなり簡単な処理になります.
-
名前をmangleするため,C++ライブラリはC++コンパイラで作成されたものだけ
利用可能です.この決定は,コンストラクタ,例外処理,そしてRTTIのような
機能の実装との衝突からユーザを守るため,C++の設計者によってなされまし
た.
-
システムによっては,ダイナミックリンカがダイナミック(すなわち実行時)に
初期化の実行するため,C++コンパイラは特別な動作を行なう必要があります.
これは,そのようなライブラリとリンクするため,`ld'を直接呼び出す
べきではなく,その代わりにC++コンパイラを使用するべきだということを意
味します.
-
C++コンパイラは,いくつかの標準C++ライブラリとデフォルトでリンクします
が,libtoolは,これらのライブラリがどれかを知らないため,それに対して
リンクする方法を調査するため,ライブラリ内部の依存の解析さえ実行できま
せん.それゆえ,C++プログラムやライブラリとリンクするため`ld'を実
行すると失敗すると思われます.
これらの問題のため,C++プログラムとライブラリをコンパイルしリンクする
ために,常にC++コンパイラを使用するように設計されています.プログラム
のmain()
関数のインスタンスによっては,スタティックなC++オブジェ
クトを適切に初期化するため,C++コンパイラでコンパイルする必要があるも
のもあります.
Go to the first, previous, next, last section, table of contents.