Perlでは、このエラーはどういう意味ですか?
Unresolved symbol: Perl_Gthr_key_ptr
HP-UX PA-RISCマシンでperl2exeを使用してPerlファイルをバイナリに変換しているときに、このエラーが発生します。
/usr/lib/dld.sl: Unresolved symbol: Perl_Gthr_key_ptr (code) from /tmp/p2xtmp-9979/Cwd.sl IOT trap (core dumped)
私の頭のてっぺんから、スレッド化されたperl用にコンパイルされたモジュールをロードしようとしている非スレッド化されたperlのように見えます。
編集:明確にするために、スレッドをサポートする(スレッド化されたperl)またはスレッドをサポートしない(スレッド化されていないperl)Perlをコンパイルできます。モジュールがスレッドで使用するように構築されており、スレッドをサポートせずにperlによってロードされた場合、通常は上記のエラーが発生します。
perlでスレッドのサポートを確認するには、次の出力で「thread」文字列を検索するだけですperl -V
。
perl -V | grep thread
ベースのPerlインストールとバイナリ互換ではないPerlモジュールがロードされています。これは、他の状況の中でも、以前にCPANシェルを使用してモジュールをインストールし、OSパッケージマネージャーを使用してその下のPerlをアップグレードしたことが原因である可能性があります。この状況は次の方法で解決できます
$ cpan -r
これにより、バイナリコンポーネントを含むすべてのCPANモジュールが検索され、現在のPerlのインストールに対してそれらのバイナリコンポーネントが再コンパイルされます。