1

我需要 Linux 机器中的 LibXML,并且像其他帖子一样出现下一个错误:

Can't locate XML/LibXML.pm in @INC 

我看到了解决方案,但我遇到的问题是,当尝试使用 cpan 生成库时,显示未找到编译器的错误。我一直在寻找问题的答案,并且找到了使用 apt-get 或 mcpan 进行安装的方法,但没有获得 apt-get 或 aptitude 命令,我只能使用 ipkg install perl_libXML 或使用 cpan。

cpan 的错误是下一个:

perl -MCPAN -e shell
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v2.00)
Enter 'h' for help.

cpan[1]> install XML::LibXML
Reading '/root/.cpan/Metadata'
  Database was generated on Sat, 01 Nov 2014 19:17:02 GMT
Running install for module 'XML::LibXML'
Running make for S/SH/SHLOMIF/XML-LibXML-2.0117.tar.gz
Checksum for /root/.cpan/sources/authors/id/S/SH/SHLOMIF/XML-LibXML-2.0117.tar.gz ok
Scanning cache /root/.cpan/build for sizes
............................................................................DONE

  CPAN.pm: Building S/SH/SHLOMIF/XML-LibXML-2.0117.tar.gz

Use of uninitialized value $config_val in pattern match (m//) at inc/Devel/CheckLib.pm line 372.
Couldn't find your C compiler
Compilation failed in require at Makefile.PL line 92.
BEGIN failed--compilation aborted at Makefile.PL line 92.
Warning: No success on command[/usr/bin/perl Makefile.PL]
  SHLOMIF/XML-LibXML-2.0117.tar.gz
  /usr/bin/perl Makefile.PL -- 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.0117.tar.gz             : writemakefile NO '/usr/bin/perl Makefile.PL' returned status 512

cpan[2]>

我不知道为什么使用 ipkg 安装没问题,但在不工作之后。我认为如果进程找到 c 编译器,使用 cpan 会起作用,但我不知道问题出在哪里,或者如何告诉 cpan 编译器的路径,或者是否需要安装它。

我尝试手动编译,这就是结果,但我不明白为什么没有编译器,我有多个编译器和系统。Ť他的错误是:

root@Linux: ~/.cpan/build/XML-LibXML-2.0117-tF5gWA # perl Makefile.PL DEBUG=1
Use of uninitialized value $config_val in pattern match (m//) at inc/Devel/CheckLib.pm line 372.
Couldn't find your C compiler
Compilation failed in require at Makefile.PL line 92.
BEGIN failed--compilation aborted at Makefile.PL line 92.
root@Kubyx: ~/.cpan/build/XML-LibXML-2.0117-tF5gWA #

你能帮我解决问题还是手工编译?

4

2 回答 2

0

安装 XML::Parser 时遇到同样的错误:

Running install for module 'XML::Parser'
Checksum for /home/sss/.cpan/sources/authors/id/T/TO/TODDR/XML-Parser-2.46.tar.gz ok
Configuring T/TO/TODDR/XML-Parser-2.46.tar.gz with Makefile.PL
Couldn't find your C compiler
Compilation failed in require at Makefile.PL line 4.
BEGIN failed--compilation aborted at Makefile.PL line 4.

但是我构建了一个 conda env 并由 conda 安装并且运行良好。可以很好地安装 XML::LibXML。

  • 构建和激活 conda env
conda create -n perl5 perl=5.26
conda activate perl5
  • 通过 conda 而不是 cpan 安装 XML::Parser,它将安装 XML::Parser 依赖库expatlibxml2auto。
conda install -c conda-forge/label/gcc7 perl-xml-parser
# conda install XML::LibXML may be work
conda install -c bioconda perl-xml-libxml
  • 测试包安装成功
perl -MXML::Parser -e ''
perl -MXML::LibXML -e ''
于 2021-08-10T12:45:31.870 回答
0

我找到了我系统的答案。

x86_64-linux-gnu-gcc 是作为 perl 参数提供的 GCC 二进制文件的可执行文件。因此,一旦我的发行版 Ubuntu,Devel::CheckLib 就找不到 C 编译器,不要使用我正在使用的版本 gcc-5 创建 x86_64-linux-gnu-gcc 的替代品。

解决方法是更改​​为 /usr/bin 并创建一个从 x86_64-linux-gnu-gcc 到 x86_64-linux-gnu-gcc-5 的符号链接。

这不是我第一次需要符号链接到 GCC 的替代名称。Ubuntu 发行版应该为所有可用的 gcc 版本创建一个替代品,并使用 update-alternatives 自动管理替代品。

于 2019-09-10T13:42:36.580 回答