使用local :: lib与第3方共享.so库

时间:2014-10-30 16:56:36

标签: perl shared-libraries cpan language-binding locallib

我有一个Perl库,它包含一个二进制形式的C库(.so文件)和该库(Makefile.PL等)的Perl绑定源。

我需要的是能够运行库附带的Perl样本。我想避免在全球范围内安装任何东西或改变系统范围的配置。

所以我创建了一个特殊用户,我希望所有内容都在主目录内运行。在homedir中更改环境和添加文件/文件夹当然可以。

我已经在系统范围内安装了local::lib和各种CPAN帮助程序(cpancpanpcpanm,因此如果他们有任何帮助我可以使用它们。< / p>

我可以创建~/lib并将.so放在那里,或将其放在~/perl5内。

问题是如何在编译期间和运行时期间使共享C库可用于Perl绑定。我似乎需要LD_LIBRARY_PATHLDFLAGS个环境变量,但我不确定如何将它们与local::lib一起使用。

此外,库名为foo.1.2.3.4.so,但链接器需要-lfoo。我应该自己创建foo.so -> foo.1.2.3.4.so符号链接吗?

UPD:

生成的Makefile的相关部分:

    LD_RUN_PATH="$(LD_RUN_PATH)" $(LD)  $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB)    \
      $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)    \
      $(INST_DYNAMIC_FIX)

修补LDDLFLAGS以包含额外的-L开关,但感觉很脏。

0 个答案:

没有答案