我有一个Perl库,它包含一个二进制形式的C库(.so
文件)和该库(Makefile.PL
等)的Perl绑定源。
我需要的是能够运行库附带的Perl样本。我想避免在全球范围内安装任何东西或改变系统范围的配置。
所以我创建了一个特殊用户,我希望所有内容都在主目录内运行。在homedir中更改环境和添加文件/文件夹当然可以。
我已经在系统范围内安装了local::lib
和各种CPAN帮助程序(cpan
,cpanp
和cpanm
,因此如果他们有任何帮助我可以使用它们。< / p>
我可以创建~/lib
并将.so
放在那里,或将其放在~/perl5
内。
问题是如何在编译期间和运行时期间使共享C库可用于Perl绑定。我似乎需要LD_LIBRARY_PATH
和LDFLAGS
个环境变量,但我不确定如何将它们与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
开关,但感觉很脏。