【问题标题】:cpanm use custom libs and cflagscpanm 使用自定义库和 cflags
【发布时间】:2017-07-18 00:04:10
【问题描述】:

在我的 mac OS X 机器上Darwin maci 15.6.0 Darwin Kernel Version 15.6.0

我已经在以下自定义目录中安装了 libxml2 和 libxslt

/usr/local/MyLibs/libxml2-2.9.2

和 libxslt

/usr/local/MyLibs/libxslt-1.1.29

现在我想使用这些库来构建我的 CPANM 模块 XML::LibXSLT

This 告诉我,我可以使用--configure-args 来做到这一点(它仍然是实验性的)。所以我做了类似的事情,

cpanm http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.94.tar.gz --configure-args="--cflags=-I/usr/local/libxslt-1.1.29/include -I/usr/include/libxml2 -I/usr/local/MyLibs/libxml2-2.9.2/include/libxml2 --libs=-L/usr/local/libxslt-1.1.29/lib -lxslt -lxml2 -lz -lpthread -licucore -lm -L/usr/local/MyLibs/libxml2-2.9.2/lib -lxml2 -lz -lpthread -liconv -lm" --force

但是,构建日志显示它没有使用安装在我的自定义位置的库。

有什么我做的不对吗?

【问题讨论】:

    标签: perl cpan xml-libxml cpanm


    【解决方案1】:

    来自发行版的README

    Makefile.PL 尝试确定正确的编译器和链接器 使用 pkg-config 和 xslt 配置。如果失败,您可以覆盖这样的值

    perl Makefile.PL INC="..." LIBS="..."
    

    其中 INC 包含编译器的标志(例如 -I/some_path/include 等),LIBS 包含链接器标志(例如 -L/some_path/lib -llibsomething ...)。

    放弃cpanm 并自己安装模块可能更简单。

    curl -L -o - http://search.cpan.org/CPAN/authors/id/S/SH/SHLOMIF/XML-LibXSLT-1.95.tar.gz | tar xz
    cd XML-LibXSLT-1.95
    perl Makefile.PL INC="..." LIBS="..."
    make test
    make install
    

    【讨论】:

      【解决方案2】:

      我认为您在 --cflags 参数周围缺少引号(需要将多个空格分隔的参数组合在一起):

      --configure-args="--cflags='-I/usr/local/libxslt-1.1.29/include -I/usr/include/libxml2 -I/usr/local/MyLibs/libxml2-2.9.2/include/libxml2'"
      

      但是,--cflags--libs 只是 cpanm 文档中的示例,甚至可能无法被发行版的 Makefile.PL 识别。正如另一个答案指出的那样,用于 XML::LibXSLT 的参数是 INC="…"LIBS="…";我认为将这些提供给 cpanm 的 --configure-args 应该可以:

      cpanm --configure-args="INC='…' LIBS='…'"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-14
        • 1970-01-01
        • 2017-05-15
        • 2022-09-23
        相关资源
        最近更新 更多