Использование local::lib с общими библиотеками.so сторонних производителей
У меня есть библиотека Perl, которая состоит из библиотеки C в двоичной форме (.so
файл) и исходные тексты для привязок Perl для этой библиотеки (Makefile.PL
так далее).
Все, что мне нужно, - это возможность запускать образцы Perl, поставляемые с библиотекой. Я бы не хотел устанавливать что-либо глобально или изменять общесистемные конфигурации.
Поэтому я создал специального пользователя и хочу, чтобы все работало внутри домашнего каталога. Изменение среды и добавление файлов / папок в homedir, конечно, хорошо.
у меня уже есть local::lib
и различные помощники CPAN, установленные для всей системы (cpan
, cpanp
а также cpanm
так что я могу использовать их, если они помогут.
Я мог бы создать ~/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
Переключатель работает, но чувствует себя грязным.