Где найти каталог общих объектов perl? - PullRequest
3 голосов
/ 18 августа 2011

Я только что купил коммерческий общий объект Perl, который действительно легок в документации.В частности, это файл ".so", и я знаю, что он должен входить в любой каталог, используемый perl для поиска общих объектов.

Обычно я сталкиваюсь с файлами ".pm" и знаю, как без проблем установить их., но это первый раз, когда я использовал что-то в Perl, где мне нужно было установить файл ".so" или скопировать его в каталог.

Кто-нибудь знает, как я могу найти этот каталог?Это на уровне колбасного производства Perl, с которым я не знаком (плюс я в любом случае бекон. LOL!).Джени

Обновление: (для большей ясности).Компания, которая продала это, имеет файл с именем «hcmodule.so».В их примере сценария perl есть прагма use "use hcmodule" и вызов позже, как ..

$retval = hcmodule( ........ <SNIP>..);

Если это немного помогает в незаметных вещах.

Ответы [ 2 ]

7 голосов
/ 19 августа 2011

Perl загружает общие объекты из каталогов в каталоге lib.В некоторых установках Perl это будет каталог lib, параллельный каталогу bin, в котором находится основной двоичный файл Perl.В некоторых системах он будет расположен в другом месте.Например, моя собственная сборка Perl (5.14.1 на MacOS X) говорит (часть вывода из perl -V):

@INC
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/site_perl/5.14.1/darwin-2level
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/site_perl/5.14.1
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/5.14.1/darwin-2level
/Users/jleffler/Perl/v5.14.1-64/lib/perl5/5.14.1

С другой стороны, система Perl (5.12.3) говорит:

@INC:
/Library/Perl/5.12/darwin-thread-multi-2level
/Library/Perl/5.12
/Network/Library/Perl/5.12/darwin-thread-multi-2level
/Network/Library/Perl/5.12
/Library/Perl/Updates/5.12.3
/System/Library/Perl/5.12/darwin-thread-multi-2level
/System/Library/Perl/5.12
/System/Library/Perl/Extras/5.12/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.12

Общие объекты в MacOS X имеют расширение .bundle (вместо .so), и некоторые из имеющихся у меня пакетов:

.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBD/Informix/Informix.bundle
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBD/SQLite/SQLite.bundle
.../lib/perl5/site_perl/5.14.1/darwin-2level/auto/DBI/DBI.bundle

СоответствующиеФайлы PM:

.../lib/perl5/site_perl/5.14.1/darwin-2level/DBD/Informix.pm
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBD/SQLite.pm
.../lib/perl5/site_perl/5.14.1/darwin-2level/DBI.pm

В любом случае Perl будет ожидать поиск файла .so в каталоге, связанном с именем модуля.Там должны быть инструкции по установке, тем более, что вы заплатили за это.Будет (по крайней мере) общий объект и файл .pm для установки в двух связанных каталогах.

4 голосов
/ 19 августа 2011

Вы пытались perl -V узнать, есть ли у вас нужная информация? У вас установлена ​​переменная окружения LD_LIBRARY_PATH?

Я работаю в Linux, и perl -V (прописные буквы V) показали, что библиотеки Perl находятся в /usr/lib/perl/5.10 и некоторых других библиотеках.

Какой именно Perl * .so файл вы купили? Я никогда не слышал, чтобы кто-то продавал Perl разделяемых библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...