h2xs コンパイラは、テンプレートのソースファイルと `Mekefile' を生成 できます。多くの拡張モジュールで、このテンプレートを叩き台として使うこと ができます。以下の例では、このドキュメントの RPC 関数を含む拡張モジュー ルを生成するために、どのように h2xs を使うのかを示します。
この拡張モジュールでは、自動ロード関数を使用しておらず、定数の定義もして
いませんから、 -A
オプションを h2xs に付けています。Perl のソース
ディレクトリで実行すると、h2xs コンパイラは、 `ext/RPC' ディレクト
リを作成し、 `RPC.xs' 、 `RPC.pm' 、 `Makefile.PL' 、
`MANIFEST' というファイルをそこに置きます。RPC 関数の XS コードは、
`RPC.xs' ファイルに付け加えます。 `RPC.pm' の @EXPORT
リストは、 `RPC.xs' から、その関数をインクルードするように更新して
おきます。
h2xs -An RPC
動的ローディングを行なう拡張モジュールのコンパイルには、
make dynamic
というコマンドを `ext/RPC' ディレクトリで実行します。拡張モジュール を Perl のバイナリに静的にリンクする場合には、Perlのソースディレクトリの `makefile' ( `Makefile' ではなく、 `makefile' を使います) を編集して、 `ext/RPC/RPC.a' を static_ext 変数に追加します。 この変更を行なう前に、Perl を作ってないといけません。 `makefile' を 更新したあとで、
make
というコマンドを、Perl のソースディレクトリで実行します。
拡張モジュールを追加するために、Perl の Configure スクリプトを使うことも できます。この場合、Perl を作成する前に、Configure の実行に先立って、拡 張モジュールを Perl のソースディレクトリの ext ディレクトリに置いておく 必要があります。Configure を実行するときに、他の拡張モジュール共々、この 拡張モジュールが ext ディレクトリで発見されると、作成される拡張モジュー ルのリストに加えられます。make が実行されると、この拡張モジュールも、他 の拡張モジュールといっしょに、組み込まれることになります。
Configure は、拡張モジュールが、そのディレクトリ名と一致するXS ソースファ イルを用意しているときに、その存在を認識します。Configure は、Perl ソー スディレクトリの `MANIFEST' にあげられている、すべての `.SH' ファイルを抽出した後で、拡張モジュールのディレクトリにも `MANIFEST' ファイルがあると、そのファイルでも `.SH' ファイルを探して抽出します。 その後、Perl のソースディレクトリの `Makefile' が、拡張モジュールの ディレクトリ名に一致する XS ファイルを見つけると、そのディレクトリで make を実行します。
Go to the first, previous, next, last section, table of contents.