【问题标题】:deploying xs module on CPAN在 CPAN 上部署 xs 模块
【发布时间】:2018-10-17 01:14:40
【问题描述】:

我正在查看不同的 xs cpan 模块,它们不包含它们所绑定的库的实际源代码,

例如在这个库上https://st.aticpan.org/source/NANIS/Net-Sharktools-0.009/ xs 模块:https://st.aticpan.org/source/NANIS/Net-Sharktools-0.009/Sharktools.xs

有 "#include "sharktools_core.h" 但是如果我浏览 metacpan 上的文件我没有找到这个文件。

这个模块也有同样的问题:https://metacpan.org/pod/Crypt::OpenSSL::RSA .xs 文件包含 #include 到不同的 openssl 文件,但这些文件不在分发中。

当这样的 xs 模块安装时,它如何包含头文件并编译 C 文件(如果它们不是分发的一部分)?

【问题讨论】:

  • 看看Devel::CheckLib,这是一个使用外部库构建 XS 代码的有用模块。

标签: perl xs


【解决方案1】:

这些发行版希望这些库在它们要安装到的系统上可用。因此,例如对于 Crypt::OpenSSL::RSA,它希望您为您的系统安装 openssl-dev 或等效包。制作不需要的发行版的一个选项是(单独)发布Alien 发行版,现在最简单的方法是使用Alien::Build。 Alien 发行版代表使用现有的已安装库或将库安装在 Perl 的库目录中,无论哪种方式它都可供 Perl 使用。例如,Alien::OpenSSLAlien::LibreSSL 都存在,并且可以由希望确保 SSL 库可用的发行版使用。您的 XS 发行版会将 Alien 发行版添加为依赖项,然后可以通过它使用该库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 2016-03-30
    • 2017-07-19
    • 1970-01-01
    • 2011-05-02
    • 2011-03-29
    • 1970-01-01
    • 2011-11-02
    相关资源
    最近更新 更多