2012-07-08 82 views
6

纠正我,如果我错了,但基于XS和Dynaloader的模块是那些使用C/C++共享对象(.so)和哪些不是PP(纯Perl)?如何手动安装XS模块?

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

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

  1. 首先得到libssl我的平台,编译它,但我应该在哪里把那个碎片对象文件,使Perl可以找到它?
  2. 当我将libssl安装并编译并定位到应该在的位置时,现在是否只需将AES.pm复制到@INC中的相关路径就足够了,还是需要配置/制作它?
+0

'Crypt :: OpenSSL :: AES'需要编译并链接到libssl才能正常工作。 1.下载并编译安装libssl 2.下载并编译安装'Crypt :: OpenSSL :: AES' – chansen 2012-07-08 18:04:35

+0

solaris的IIRC标准安装不会给你cc或者gcc或者任何其他的c编译器 – beresfordt 2012-07-08 18:09:20

回答

6
  1. 如果你没有root访问我会在安装${HOME}/lib。只要确保链接器可以找到它,或者目录应该在你的环境变量LD_LIBRARY_PATH或更好的point EU::MM to the library and include files

  2. 不,该模块在C中也有一部分需要编译。

要安装

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

然后按照下安装

perl Makefile.PL INC="-I $HOME/include" LIBS="-L $HOME/lib" 
make 
make test 
make install 

自述文件中的步骤,将确保该模块正确构建,测试和安装。

6

CPAN本身是基本perl安装的一部分。它将始终可用。

如果您不能使用cpan壳谈互联网和获取模块,你至少可以抓住从CPAN网站的压缩包,把它在目标机器上,其解压缩,然后运行

$ cpan . 

从解压后的目录中。这将运行该分发的CPAN安装程序。当然,如果它发现缺少依赖关系,则必须使用相同的技术递归地获取它们。