我正在寻找不同的 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 文件包含对不同 openssl 文件的 #include,但这些文件不在发行版中。
当安装这样的 xs 模块时,如果它们不是发行版的一部分,它如何包含标头并编译 C 文件?
这些发行版希望库在它们要安装到的系统上可用。例如,对于 Crypt::OpenSSL::RSA,它希望您为您的系统安装openssl-dev
或等效的软件包。制作不需要这样做的发行版的一个选项是(单独(发布一个 Alien 发行版,现在最简单的方法是使用 Alien::Build。Alien 发行版表示要么使用现有的已安装库,要么在 Perl 的库目录中安装库,无论哪种方式都可以供 Perl 使用。例如,Alien::OpenSSL 和 Alien::LibreSSL 都存在,并且可以被想要确保 SSL 库可用的发行版使用。您的XS发行版会将Alien发行版添加为依赖项,然后可以通过该发行版使用该库。