バイナリ形式の C ライブラリ (.soファイル) とそのライブラリの Perl バインディングのソース (Makefile.PLなど) で構成される Perl ライブラリがあります。
必要なのは、ライブラリに同梱されている Perl サンプルを実行する機能だけです。グローバルに何かをインストールしたり、システム全体の構成を変更したりしたくありません。
だから私は特別なユーザーを作成し、すべてをホームディレクトリ内で実行したいと考えています。もちろん、環境を変更してホームディレクトリにファイル/フォルダーを追加しても問題ありません。
私はすでにlocal::libさまざまな CPAN ヘルパーをシステム全体にインストールしています ( cpan、cpanpそのcpanmため、それらが役立つ場合はそれらを使用できます。
作成~/libしてそこに置く.soことも、 内のどこかに置くこともできます~/perl5。
問題は、コンパイル時および実行時に共有 C ライブラリを Perl バインディングで使用できるようにする方法です。環境変数が必要なようですがLD_LIBRARY_PATH、LDFLAGSそれらを一緒に使用する方法がわかりませんlocal::lib。
さらに、ライブラリの名前はfoo.1.2.3.4.sobut リンカーが望んでい-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スイッチを含めると機能しますが、汚れているように感じます。