4

CPAN を介して Perl XML::LibXML モジュールをインストールしようとしていますが、次のエラーが発生します。Windows 7 マシンと Perl v5.16.1 を使用しています。私は多くの検索を行いましたが、解決策はありませんでした。

問題は何ですか?

Set up gcc environment - 3.4.5 (mingw-vista special r3)
enable native perl UTF8
Checking for ability to link against xml2...no
Checking for ability to link against libxml2...libxml2, zlib, and/or the Math library (-lm) have not been found.
Try setting LIBS and INC values on the command line
Or get libxml2 from
  http://xmlsoft.org/
If you install via RPMs, make sure you also install the -devel
RPMs, as this is where the headers (.h files) are.

Also, you may try to run perl Makefile.PL with the DEBUG=1 parameter
to see the exact reason why the detection of libxml2 installation
failed or why Makefile.PL was not able to compile a test program.
**No 'Makefile' created  SHLOMIF/XML-LibXML-2.0014.tar.gz
  C:\Perl\bin\perl.exe Makefile.PL INSTALLDIRS=site -- NOT OK**
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
**Could not read metadata file. Falling back to other methods to determine prerequisites**
Failed during this command:
 SHLOMIF/XML-LibXML-2.0014.tar.gz             : writemakefile NO -- No 'Makefile' created
4

3 に答える 3

5

どの Perl ディストリビューションを使用しているかは明確ではありません。Windows では、ActivePerlとそのネイティブ パッケージ マネージャーppm(CPAN ではなく) を使用するのが最も簡単です。

私の Windows 7 マシンでは、XML::LibXML次のコマンドを使用して問題なくインストールできました。

ppm install XML::LibXML
于 2012-12-12T10:40:28.000 に答える
0

Strawberry Perlをインストールします。XML::LibXML とその依存関係が組み込まれています。

于 2015-06-24T18:55:41.013 に答える
0

Windows 上の ActivePerl の場合、XML::LibXML は、手動でインストールする必要がある依存関係がないため、PPM を介して利用できなくなりました。

CPAN を介してインストールするのが正しい方法ですが、libxml2 とその依存関係が存在することを確認する必要があります。それらは XML::LibXML によって必要とされます。

インストール (ここから取得、Rudy Rodriguez のおかげ) は長く曲がりくねった道のりですが、うまくいきます (Win 8.1、ActivePerl 5.20.1 x64):

  • libxml2、iconv、zlib (すべてここから) およびgettext-toolsの必要なバイナリ パッケージを取得します。

  • すべてのファイルを同じディレクトリ (例: C:\perl_libxml\merged) に抽出して、各 zip ファイル内の include、lib などのサブディレクトリ内のファイルが 1 つの共通の include、lib などのディレクトリに抽出されるようにします。

  • /libxml2/libxml フォルダーを 1 レベル上に移動します。つまり、/libxml に移動します。これは想定されるデフォルト ディレクトリであるためです。

  • libz.a を zlib.a に名前変更します (lib ディレクトリ内)。

  • 依存関係をインストールする

    ppm install dmake MinGW XML::NamespaceSupport XML::SAX
    
  • c:\perl_libxml\merged\bin を Windows PATH に追加します。
  • c:\perl64\cpan\build\XML-LibXML<...> など、失敗した cpan ビルドが存在するディレクトリに移動します。
  • 走る:

    Makefile.PL INC=-IC:\perl_libxml\merged\include LIBS=-LC:\perl_libxml\merged\lib
    

    Makefile のビルドは成功するはずです。そうでない場合は、LIBS および INC パラメータが正しいディレクトリを指しているかどうかを確認します。

  • dmake
    

    これが失敗した場合は、パス エントリが正しく設定されているかどうかを確認してください

  • dmake test
    

    「dmake テスト」が次のような不可解なエラーで失敗した場合:

    load_file:%1 is not a valid Win32 application at C:/Perl64/lib/DynaLoader.pm line 191
    

    一部のライブラリの異なるバージョンが PATH に存在し、ビルド中にリンクされている可能性があります。

    PATH に別の MinGW 環境があり、間違ったライブラリのリンクにつながりました。Windows Server 2003 プラットフォーム SDKの「依存」ツールを使用して、ビルドされた libxml.dll を調べることで解決できました。libxml.dll によって使用される DLL と、コンパイルされたプラットフォームを確認できます。これらはすべて、x86 または x64 のいずれかの Perl バージョンと一致する必要があります。

  • テストが成功したら、最後に XML::LibXML をインストールします

    dmake install
    

補足:この質問はかなり古いことは知っていますが、将来同じ問題に遭遇する他の人のための参考として、この解決策をここに記載します(おそらく私もその1人です...)。

于 2015-06-24T18:13:02.513 に答える