1

バイナリ形式の C ライブラリ (.soファイル) とそのライブラリの Perl バインディングのソース (Makefile.PLなど) で構成される Perl ライブラリがあります。

必要なのは、ライブラリに同梱されている Perl サンプルを実行する機能だけです。グローバルに何かをインストールしたり、システム全体の構成を変更したりしたくありません。

だから私は特別なユーザーを作成し、すべてをホームディレクトリ内で実行したいと考えています。もちろん、環境を変更してホームディレクトリにファイル/フォルダーを追加しても問題ありません。

私はすでにlocal::libさまざまな CPAN ヘルパーをシステム全体にインストールしています ( cpancpanpそのcpanmため、それらが役立つ場合はそれらを使用できます。

作成~/libしてそこに置く.soことも、 内のどこかに置くこともできます~/perl5

問題は、コンパイル時および実行時に共有 C ライブラリを Perl バインディングで使用できるようにする方法です。環境変数が必要なようですがLD_LIBRARY_PATHLDFLAGSそれらを一緒に使用する方法がわかりません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スイッチを含めると機能しますが、汚れているように感じます。

4

0 に答える 0