如何手动安装XS模块?

sno*_*kin 7 perl module perl-module xs

如果我错了,请纠正我,但基于XS和Dynaloader的模块是那些使用C/C++共享对象(.so)而不是PP(Pure Perl)的模块?

现在假设我有一台机器,它没有任何网络连接(Solaris 10),我想要安装Crypt::OpenSSL::AES(基于XS的模块),将AES.pm文件复制到@INC中的相关路径不会有任何好处,因为我的系统没有libssl安装.

我的第二个也是最重要的问题是,当我没有CPAN时如何安装这些模块?我的方法是:

  1. 首先得到libssl我的平台,编译它,但我应该在哪里放置该分片对象文件,以便perl可以找到它?
  2. 当我安装和编译libssl并找到它应该的位置时,现在只需将其复制AES.pm到@INC中的相关路径,还是需要配置/制作它?

Leo*_*erd 7

CPAN本身是基本perl安装的一部分.它将永远可用.

如果你不能使用cpanshell与互联网交谈并获取模块,你至少可以从CPAN网站抓取tarball,将它放在目标机器上,解压缩它,然后运行

$ cpan .
Run Code Online (Sandbox Code Playgroud)

从解压缩目录中.这将运行该分发的CPAN安装程序.当然,如果它找到缺少的依赖项,你将不得不使用相同的技术递归地获取它们.


Mat*_*teo 6

  1. 如果您没有root访问权限,我会安装${HOME}/lib.只需确保链接器可以找到它,或者目录应该在您的LD_LIBRARY_PATH环境变量中,或者更好地将EU :: MM指向库和包含文件.

  2. 不,该模块还有一个必须编译的C部分.

安装

下载分发tarball:http: //search.cpan.org/CPAN/authors/id/T/TT/TTAR/Crypt-OpenSSL-AES-0.02.tar.gz

然后按照INSTALLATION下的README文件中的步骤操作

perl Makefile.PL INC="-I $HOME/include" LIBS="-L $HOME/lib"
make
make test
make install
Run Code Online (Sandbox Code Playgroud)

这将确保模块正确构建,测试和安装.