1

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

我所需要的只是运行库附带的 Perl 示例的能力。我想避免全局安装任何东西或更改系统范围的配置。

所以我创建了一个特殊用户,我希望一切都在主目录中运行。更改环境并在 homedir 中添加文件/文件夹当然没问题。

我已经在local::lib系统范围内安装了各种 CPAN 助手 ( cpancpanp因此cpanm如果它们有任何帮助我可以使用它们。

我可以创建~/lib并放在.so那里,或者把它放在里面的某个地方~/perl5

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

此外,该库被命名为foo.1.2.3.4.sobut linker want -lfoo。我应该自己创建foo.so -> foo.1.2.3.4.so符号链接吗?

更新:

生成的相关部分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开关可以工作,但感觉很脏。

4

0 回答 0