1
私はちょうどhello worldのPerl拡張をコンパイルして実行しましたが、私は原理を知らないのです。どうすれば.pm
は.so
と呼びますか?Perlモジュール(.pm)が対応する.soをどのように呼び出すのですか?
私はちょうどhello worldのPerl拡張をコンパイルして実行しましたが、私は原理を知らないのです。どうすれば.pm
は.so
と呼びますか?Perlモジュール(.pm)が対応する.soをどのように呼び出すのですか?
バイナリコードでは、モジュールの名前空間でいくつかの変数と関数を定義する必要はありません。通常の変数と同様に使用できます。 .pm
ファイルは、必要なときに.so
がロードされていることを確認する必要があります。これはDynaLoaderモジュールによって行われます。 DynaLoader
から継承すると、クラスに未知のメソッドが呼び出されたときに.so
ファイルがロードされていることを確認します。
あなたは '.pm'がどのように' .so'にマップされているか言及しませんでした。 – Learning
@Learning:これはDynaLoader(または軽量のいとこのXSLoader)によって行われました。あなたが望むなら、あなたはそれのソースを読むことができますが、他人はそれをどう扱うかを気にする必要はありません。 – ysth
@Learning:モジュール 'Foo :: Bar'の場合、ファイルは' auto/Foo/Bar.so'です。ルールは '.pm'ファイルとほとんど同じですが、' auto/'ディレクトリが前に付いています。 –